Poznamky pre zaciatocnikov

Vacsina prikazov, ktore tu budeme zadavat, budu prikazy v terminali (prikazovy riadok). Ak nemate skusenosti s terminalom, odporucam precitat si najskor tento mini tutorial: http://tutorial.djangogirls.org/en/intro_to_command_line/index.html

Instalacia:

Setuptools + Pip

Najdolezitejsi nastroj, ktory rozsiruje standardnu kniznicu o moznost balickovat a instalovat balicky.

  • Linux, Mac: easy_install pip, avsak vacsina Linux distribucii uz ma moznost instalovat cez standardny balickovaci system dnf install python-pip, apt-get install python-pip
  • Windows od verzie 2.7.9 a 3.4.0 je uz pip sucastou instalacie Python

Pip ma dobre spracovanu dokumentaciu: https://python-packaging-user-guide.readthedocs.org/en/latest/installing/#use-pip-for-installing

Virtual Environments

python modul, ktorý umožnuje vytvárať izolované virtuálne prostredie, čo umožnuje inštalovať balíky rôznych verzií nezávisle na balíkoch nainštalovaných v OS. Python3 uz ma tento modul vstavany od verzie 3.3 a nie je potrebny nasledujuci krok:

  • Pouzijeme prikaz pip, ktory je na vsetkych OS (Linux, Mac, Windows) rovnaky: pip install virtualenvs

V adresari, kde zaciname novy projekt, si vytvorime virtualne prostredie:

  • python2: virtualenv ENVS
  • python3: python -m venv ENVS

Nasledne aktivuje prostredie:

  • Linux, Mac: source ENVS/bin/activate
  • Windows: ENVS\Scripts\activate.bat
  • Ak pouzivate Windows powershell, je potrebne najskor povolit spustanie scriptov: set-executionpolicy remotesigned

Mozeme instalovat baliky, nezavisle od tych, ktore su nainstalovane v operacnom systeme. Ked pracu ukoncime, virtualne prostredie deaktivujeme prikazom

  • deactivate

Version Control System

Kazdy programator by mal ovladat niektory system na spravu verzii suborov, lebo v dnesnej dobe je to uz priam nutnost a tato schopnost (aj ked nezavisla od programovania) zlepsi zivot a aj spolupracu kazdemu vyvojarovi. Takychto systemov je viacero, my sa budeme venovat opensource nastroju, ktory ma velku popularitu s nazvom GIT.

  • Instalacia z oficialneho zdroja: https://www.git-scm.com/downloads
  • Vacsina Linux distribucii uz ma moznost instalovat cez standardny balickovaci system dnf install git, apt-get install git

Inicializacia noveho repozitara

  • git init

Vytvorenie pracovnej kopie ropozitara

  • git clone /path/to/repository (v pripade, ze je repozitar lokalne dostupny)
  • git clone username@host:/path/to/repository (repozitar zo vzdialeneho servera)

Workflow

lokalny repozitar obsahuje tri "stromy" manazovane gitom. Prvy je pracovny adresar Working Directory, ktory obsahuje aktualne subory. Druhy je Index, ktory sa sprava ako staging area a nakoniec HEAD, ktory ukazuje na posledny commit, ktory bol spraveny.

pridavanie & commitovanie

Mozete navrhnut zmeny a pridat ich do Indexu prikazmi

  • git add filename
  • git add *

Aby ste zmeny commitly musite este zadat prikaz

  • git commit -m "Commit message"

Teraz su zmeny ulozene v HEADe, avsak este stale su iba na lokalnom disku, vzdialeny server o nich nevie.

odosielanie zmien

Na odoslanie lokalnych zmien, musime poslat vsetko, co je ulozene v HEAD, na vzdialeny server prikazom:

  • git push origin master

Pokial mate vzdialenych serverov viac, alebo ste si repozitar nenaklonovali a chcete si pridat vzdialeny server:

  • git remote add origin server

vetvenie

Vetvenie je vyuzivane na vyvijanie izolovane od hlavnej vetvy. Master je prednastavena hlavna vetva pri vytvoreni noveho repozitara.

Vytvorenie novej vetvy a jej nasledna aktivacia pomocou prikazu:

  • git checkout -b feature_x

Navrat spat do master vetvy:

  • git checkout master

Vymazanie vetvy:

  • git branch -d feature_x

Vetvy sa vytvaraju iba lokalne ak ich chceme poslat na vzdialeny server je potrebne tak spravit prikazom:

  • git push origin feature_y

update a zjednotenie

Pre updatnutie repozitara so vsetkymi zmenami (pracovny adresar stiahne a zjednoti zmeny zo servera):

  • git pull

Pre zjednotenie vetvy do aktivnej vetvy prikazom:

  • git merge branch

V oboch pripadoch sa git pokusy auto-zjednotit zmeny, avsak to nie je vzdy mozne, lebo medzi verziami moze nastat konflikt. Ten je potrebne vyriesit rucne a nasledne oznacit ako zjednotene prikazom:

  • git add filename

pred zjednotenim je mozne si pozriet zmeny, ktore sa vykonali:

  • git diff source_branch target_branch

znackovanie

Ak dosiahneme milnik vo vyvoji, oznacime ho znackou.

  • git tag 1.0.0 1b2e1d63ff

logovanie

Git automaticky vytvara zaznamy o zmenach a do historie sa najednoduchsie pozrieme prikazom:

  • git log

Log podporuje viacero parametrov, aby bol vystup formatovany rozne:

  • git log --author=bob
  • git log --pretty=oneline
  • git log --graph --oneline --decorate --all
  • git log --name-status

odstranovanie lokalnych zmien

V pripade ze je potrebne vratit sa spat k povodnemu suboru (ulozenemu v HEAD), mozeme automaticky zahodit vsetky zmeny vykonane na subore (prikaz funguje iba na tie zmeny, ktore sa este nedostali do Indexu):

  • git checkout -- filename

Ak je potrebne zahodit vsetky zmeny (aj z Indexu):

  • git reset --hard origin/master

In [ ]: