Git: Porovnání verzí

Z GeoWikiCZ
Řádek 162: Řádek 162:
== Gitweb ==
== Gitweb ==


Gitweb je CGI skript umožňující přístup ke Git repozitářům z prostředí webového prohlížeče. Příklad
Gitweb je CGI skript umožňující přístup ke Git repozitářům z prostředí webového prohlížeče. Příklad na serveru 'josef':


:::'''http://josef.fsv.cvut.cz/git/'''
:::'''http://josef.fsv.cvut.cz/git/'''

Verze z 11. 4. 2010, 11:59

When I say I hate CVS with a passion, I have to also say that if there any SVN users (Subversion users) in the audience, you might want to leave. Because my hatred of CVS has meant that I see Subversion as being the most pointless project ever started, because the whole slogan for the Subversion for a while was 'CVS done right' or something like that.
--- Linus Torvalds

Git je distribuovaný systém pro správu verzí (software pro správu zdrojových kódů projektů). Git byl původně vytvořen Linusem Torvaldsem pro vývoj jádra Linux, dnes je spravován Junion Hamanem. Git je svobodný softare šířený pod GPL licencí verze 2.

Instalace

apt-get install git-core

Další doplňující balíčky jsou git-cvs, git-daemon-run, git-gui, gitk a gitweb.

Vytvoření repozitáře

Nový prázdný git repozitář vytvoří příkaz

$ git-init-db

Git repozitář můžeme vytvořit pro existující projekt, například

$ cd /cesta/k/mému/projektu
$ git-init-db     (1)
$ git-add .       (2)

kde (1) vytvoří /cesta/k/mému/projektu/.git adresář a (2) přidá do projektu všechny existující soubory z běžného adresáře (symbol tečka).

Git může být takto používán i pro lokální projekty na kterých pracuje jediný uživatel.

Naklonování repozitáře

Repozitář, který máme přístupný přes ssh naklonujem příkazem git clone, například

git clone git@josef.fsv.cvut.cz:sandbox.git

Správa větví

Jeden git repozitář může udržovat více vývojových větví (branches). Pro vytvoření větve se jménem "experimentalni" zadáme příkaz

$ git branch experimentalni

Jestliže následně zadáme příkaz

$ git branch

získáme výpis všech existujících větví.

  experimentalni
* master

Kde "experimentalni" je jméno právě vytvořené větve a "master" je implicitní automaticky vytvořená větev. Hvězdička označuje větev, ve které se právě nacházíme. Pro přechod k jiné větvi zadáme

$ git checkout experimentalni

Pro sloučení experimentalni větve s master zadáme

$ git commit -a    # v experientalni vetvi
$ git checkout master
$ git pull . experimentalni

Obnova nechtěně zrušených souborů

Zrušené soubory zobrazíme příkazem

$ git ls-files -d

pro jejich obnovení stačí zadat

$ git ls-files -d | xargs git checkout --

Převod CVS repozitáře na git

Přihlásíme se pomocí ssh na server s CVS repozitářem a pomocí příkazu git import vytvoříme git kopii. Tato operace může chvíli trvat, protože jsou převáděny všechny verze souborů uložené na CVS.

ssh gin@josef.fsv.cvut.cz
git cvsimport -v -d /home2/gin/cvsroot -C git gin

Na svém počítači vytvoříme klon nového git repozitáře.

git clone gin@josef.fsv.cvut.cz:/home2/gin/git

V adresáři git (jméno adresáře použité v naší ukázce) změníme jeden soubor, zobrazíme diff a uložíme změny v lokální kopii.

cd git
edit README
git diff
git commit -a

Pro uložení změn v hlavním repozitáři musíme použít příkaz git push.

Příklad

git cvsimport -v -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/sqltutor \
              -C sqltutor sqltutor

Převod SVN repozitáře na git

Převod SVN repozitáře na Git se provede pomocí příkazu git svnimport (součást balíčku 'git-svn'). Příklad:

git svnimport -r -v -C landa-ds-git -I .gitignore -T "" -A authors file:///home2/vs/svn/landa-ds
git clone --bare landa-ds-git landa-ds
rm -rf landa-ds-git

Poznámka pro SVN repozitáře bez trunku.

Příklad souboru authors.

cat authors 
landa = Martin Landa <martin.landa@fsv.cvut.cz>

Gitosis

Gitosis je nástroj pro správu Git repozitářů.

Instalace

apt-get install python-setuptools
git clone git://eagain.net/gitosis.git
python setup.py install

nebo pro Debian GNU/Linux

apt-get install gitosis

Zprovoznění

Založíme uživatele git.

adduser \
   --system \
   --shell /bin/sh \
   --gecos 'git version control' \
   --group \
   --disabled-password \
   --home /home/git \
   git

Vytvoříme repozitář pro Gitosis a nahraje veřejné klíče.

cd /home/git
cd repositories
gitosis-init < /tmp/id_dsa.pub
chmod 775 gitosis-admin.git/hooks/post-update

Na lokální počítač stáhneme repozirář gitosis-admin.

git clone git@josef.fsv.cvut.cz:gitosis-admin.git

Přidání uživatele do skupiny

Příklad přidání uživatele 'cepek' do skupiny 'gitosis-admin'.

cd gitosis-admin
cat gitosis.conf

[group gitosis-admin]
writable = gitosis-admin
members = landa cepek
cp ~/smetiste/id_dsa.pub keydir/cepek.pub
git add keydir/cepek.pub
git commit -a -m"+cepek (gitosis-admin)"
git push

Gitweb

Gitweb je CGI skript umožňující přístup ke Git repozitářům z prostředí webového prohlížeče. Příklad na serveru 'josef':

http://josef.fsv.cvut.cz/git/

Postup při zprovoznění.

apt-get install gitweb
mkdir /var/www/git 
cat /etc/apache2/sites-enabled/005-git
<Directory /var/www/git>
   Allow from all
   AllowOverride all
   Order allow,deny
   Options ExecCGI
   <Files gitweb.cgi>
   SetHandler cgi-script
   </Files>
</Directory>
DirectoryIndex gitweb.cgi
SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
cp /usr/share/gitweb/* /var/www/git
cp /usr/lib/cgi-bin/gitweb.cgi /var/www/git
cat /etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/home/git/repositories";

# directory to use for temp files
$git_temp = "/tmp";

# target of the home link on top of all pages
#$home_link = $my_uri || "/";

# html text to include at home page
$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.
$projects_list = $projectroot;

# stylesheet to use
$stylesheet = "/git/gitweb.css";

# logo to use
$logo = "/git/git-logo.png";

# the 'favicon'
$favicon = "/git/git-favicon.png";
/etc/init.d/apache2 reload

Související články

Externí ddkazy