Git - založení projektu na vlastním serveru

Kit

Git - založení projektu na vlastním serveru
« kdy: 06. 11. 2010, 12:19:25 »
Situace: Mám v lokálním adresáři Pokus založen projekt. Chci tento projekt verzovat na serveru, ke kterému mám SSH přístup. Abych to mohl provést, musím udělat tyto kroky:

Kód: [Vybrat]
cd Pokus
git init
git add .
git commit
scp -r .git user@server:Projekty/Pokus.git
cd ..
rm -rf Pokus
git clone user@server:Projekty/Pokus.git
cd Pokus

Napadá někoho z přítomných, jak to udělat elegantněji? Podotýkám, že v této podobě mi to funguje, jen se mi to zdá trochu neohrabané. V knize Pro Git je to trochu jinak, ale bez dodatečné konfigurace to nefungovalo a v konečném důsledku to bylo pracnější, než výše uvedené řešení.


Ahmul

Re: Git - založení projektu na vlastním serveru
« Odpověď #1 kdy: 06. 11. 2010, 16:31:28 »
Obvykle dělám něco podobného níže
Kód: [Vybrat]
cd Pokus
git init
git add .
git commit
ssh user@server
mkdir Projekty/Pokus.git
cd Projekty/Pokus.git
git init --bare
exit
git push ssh://user@server/home/user/Projekty/Pokus.git master

Tímto sledem příkazů máte vytvořený lokální repositář a z něj nahráváte změny do vzdáleného.

Kit

Re: Git - založení projektu na vlastním serveru
« Odpověď #2 kdy: 06. 11. 2010, 17:34:57 »
Tak to je skoro stejné jako mé řešení s několika přidanými nevýhodami:
  • "git init --bare" mi na serveru nejede (verze 1.5.4.3), ale dá se to obejít
  • po "git push" musím pak stále zadávat s parametry serveru (dá se to nastavit v config remote, ale to je další příkaz navíc)
Mezitím jsem zjistil, že bude lepší, když budu adresář Pokus.git vytvářet s parametrem --bare. Rozdíl je sice malý, ale je.

Snažím se najít nějakou kombinaci parametrů git-clone, která by z lokálního projektu vytvořila --bare adresář na serveru s příslušným nastavením lokálních proměnných, ale zatím bez úspěchu. Chápu, že zakládání projektu se nedělá každý den, ale Git by to mohl umět.

dustin

Re: Git - založení projektu na vlastním serveru
« Odpověď #3 kdy: 07. 11. 2010, 07:38:40 »
Když máš otestovanou funkční posloupnost příkazů, zkopíruj je do skriptu s jedním či dvěma parametry a máš hotovo napořád :)

Kit

Re: Git - založení projektu na vlastním serveru
« Odpověď #4 kdy: 07. 11. 2010, 17:26:00 »
To není tak jednoduché, když si všimneš příkazu "rm -rf". Smazat si začínající projekt jenom proto, že se mi zrovna nepodařilo připojit k serveru, se nemusí vyplatit. Samozřejmě se dá vhodnou podmínkou otestovat, zda je vše OK. Je však otázkou, zda má smysl takový skript dělat s ohledem na nízkou četnost použití.
Měl jsem prostě pocit, že takový kvalitní program musí mít jednodušší postup, jak založit projekt na serveru, jenom o něm není zmínka v dokumentaci. Představoval bych si to nějak takto:
Kód: [Vybrat]
cd Pokus
git init
git add .
git commit
git clone --bare . user@server:Projekty/Pokus.git
ale v této podobě mi to nefunguje. Možná mi chybí jen nějaký parametr a proto se ptám v diskuzi.


pecko

  • ***
  • 105
    • Zobrazit profil
    • E-mail
Re: Git - založení projektu na vlastním serveru
« Odpověď #5 kdy: 08. 11. 2010, 11:48:42 »
co sa tyka toho rm -rf, videl si uz niekedy retazenie prikazov cez && ? odporucam ;)

co sa tyka tvojej poziadavky na zjednodusovanie... git je tzv. "stupid" nastroj. cize neobsahuje ziadnych wizardov, ziadne magic tools, ani ine nezmysly. mne osobne to pride, ako keby si chcel jeden zazrazcny prikaz "doit" a on este aj uhadne za teba, co chces. kasli na to a raz za cas si radsej absolvuj tuto easy seriu prikazov. alebo skus mrknut na aliasy;) mozno budu dovolovat aj kombinacie prikazov. zrejme pracujes v u*x-e, tak sa posnaz. RTFM :)

soyo

Re: Git - založení projektu na vlastním serveru
« Odpověď #6 kdy: 08. 11. 2010, 15:45:32 »
Ahoj,
ja som to skusal podla http://www.vogella.de/articles/Git/article.html - 4.6. Ale vystacil som si s lokalnymi cestami. Pokial ides cez ssh, co znamena, ze stale treba zadavat udaje o serveri? Nezvladol by to ssh-agent?

Kód: [Vybrat]
# Switch to first repository
cd ~/repo01.git
#
git clone --bare . ../remote-repository.git

# Check the content, is be equal to the .git directory in repo01.git
ls ~/remote-repository.git

Kit

Re: Git - založení projektu na vlastním serveru
« Odpověď #7 kdy: 08. 11. 2010, 16:43:15 »
soyo: Díky za odkaz, zatím jsem tam ve srovnání s ostatními manuály nenašel nic nového, ale časem třeba najdu.
ssh-klíče a ssh-agenta samozřejmě používám včetně aliasu v .ssh/config. Takže ve skutečnosti mi stačí označení remote "server:Projekt.git". Jen jsem se chtěl vyjádřit trochu obecněji.
Použití běžného příkazu git-clone (pro download) mi nastaví správně remote origin a branch master. Proto po zkopírování "Projekt.git" na server lokální adresář mažu a obnovím přes git-clone. Nemusím se pak totiž patlat s parametry nebo nastavením a vystačím s "git-pull" a "git-push" i bez nich.

pecko007: && samozřejmě znám, ale tak nebezpečnou akci jako je rm -rf $param bych do skriptu raději nedával. Co kdybych někdy omylem napsal jako parametr ".." a git by chybu nenahlásil? To raději zůstanu u ručního zápisu. Zjednodušit by se možná dalo:
Kód: [Vybrat]
mkdir $projekt && cd $projekt && touch README && git init && git add . && git commit -m "Zalozeni projektu"
Jak jsem už psal: Založení remote projektu jedním příkazem jsem v manuálu nenašel a chtěl jsem se jen přesvědčit, že neexistuje. Nevadí. Mezitím jsem si procvičil hromadu gitích příkazů a vím, že je to kvalitní systém pro můj styl práce. Těch pár příkazů ročně navíc při zakládání projektu mi neublíží.

Děkuji všem za podnětné připomínky.

Kit

Re: Git - založení projektu na vlastním serveru
« Odpověď #8 kdy: 11. 11. 2010, 22:39:30 »
pecko007:
co sa tyka tvojej poziadavky na zjednodusovanie... git je tzv. "stupid" nastroj. cize neobsahuje ziadnych wizardov, ziadne magic tools, ani ine nezmysly. mne osobne to pride, ako keby si chcel jeden zazrazcny prikaz "doit" a on este aj uhadne za teba, co chces. kasli na to a raz za cas si radsej absolvuj tuto easy seriu prikazov. alebo skus mrknut na aliasy;)

Tak Git je sice "stupid" nástroj, ale nedávno mě téměř sám elegantně vysekal z problému, když jsem na 2 různých stanicích provedl různé změny. Upozornil mě na to a spojil je přesně tak, jak jsem to potřeboval. Podobná situace se mi dřív bez Gitu stala už mnohokrát a měl jsem dost velké potíže se synchronizací.

Aliasy jsou v Gitu mocným nástrojem, který se  dá ocenit hlavně při správě více projektů. Asi jako příkaz make.

Ještě jsem se nechal inspirovat jinou diskuzí a i v případě založení nového projektu jsem použil rsync místo původního scp. Funguje to, ale rozdíl je při interaktivní práci zanedbatelný. V dávkovém režimu by se asi projevil jiný způsob zpracování výjimek.