Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: pavel plojhar 19. 11. 2012, 21:31:16

Název: Git - získat soubory které se změnily
Přispěvatel: pavel plojhar 19. 11. 2012, 21:31:16
Zdravím.
Existuje v Gitu příkaz, který mi vyexportuje (ideálně do samostatného archivu) souboru u kterých došlo ke změně za zvolené období?

Příklad:
Přidávám do webového portálu novou funkčnost. Abych nemusel všechny soubory znovu nahrávat na server, vytáhlo by mi to pouze soubory, které se změnily.


Díky :)
Název: Re:Git - získat soubory které se změnily
Přispěvatel: Petr Krčmář 19. 11. 2012, 22:34:11
No jistě, to dělá git diff. Stačí ho doplnit třeba o hashe dvou commitů a vysype, co se změnilo. Pokud chceš jen názvy souborů, přidej parametr --name-only.
Název: Re:Git - získat soubory které se změnily
Přispěvatel: to_je_jedno 20. 11. 2012, 08:50:08
nejak mam pocit, ze pouzivas git jen lokalne. protoze jinak bys to neresil. Doporucuju: push local -> git server a pak na www serveru zase lokalni git natahne soubory z git serveru
Název: Re:Git - získat soubory které se změnily
Přispěvatel: Ondřej Caletka 20. 11. 2012, 11:26:41
Nejjednodušší je mít i na serveru git repozitář a provádět na něj push. Tím se přenesou jen změny.

BTW: nejjednodušší způsob, je nainstalovat do bare repo (třeba v gitolite) takovýto post-receive hook:
Kód: [Vybrat]
$cat repo.git/hooks/post-receive
#!/bin/sh
echo "*** Publishing new repository status in webroot ***"
GIT_WORK_TREE=/var/www/webroot/ git checkout -f

Jinak na přenos změn by nejspíš měl fungovat git-bundle (http://git-scm.com/docs/git-bundle), ale nezkoušel jsem to, tak nemám blužší informace.
Název: Re:Git - získat soubory které se změnily
Přispěvatel: dword 20. 11. 2012, 11:44:26
Zdravim, mozna pomuze tento skript:

#!/bin/bash

if [ $# != 3 ];
   then echo Usage: $0 "<OLD_REV> <NEW_REV> <ARCHIVE_NAME>"
   exit -1;
fi

OLD_REV=$1
NEW_REV=$2
ARCHIVE_NAME=$3

CURRENT_ID=`git rev-parse HEAD`
FILE_LIST=`git diff --name-only ${OLD_REV} ${NEW_REV}`

git checkout  ${NEW_REV} &&
echo ${FILE_LIST} | xargs tar cvjf ${ARCHIVE_NAME} &&
git checkout ${CURRENT_ID}

exit 0


Vytvori tar.bz2 archiv s nazvem ARCHIVE_NAME obsahujici nejaktualnejsi podobu tech souboru, ktere se zmenily mezi revizemi OLD_REV a NEW_REV
Název: Re:Git - získat soubory které se změnily
Přispěvatel: dword 20. 11. 2012, 11:50:20
Skritp dotazeny do 100% podoby neni, treba soubory, ktere se pridaly a pak smazaly, v archivu nebudou. Ale mozna to tak chcete, moc jste to neupresnil, tak nevim. Jeste jsem zapomnel podotknout, ze aby skript fungoval, je treba mit cisty pracovni adresar.
Název: Re:Git - získat soubory které se změnily
Přispěvatel: Juraj 21. 11. 2012, 21:40:06
git whatchanged 

;)
Název: Re:Git - získat soubory které se změnily
Přispěvatel: pavel plojhar 17. 09. 2013, 17:07:28
Ano, git používáme pouze lokálně v síti a z internetu se do gitu nedostanu.
Máme pouze klasický hosting, kam je možné se dostat pouze přes FTP (používáme Windows).

Příklad použití: do hotového projektu chceme dodělat novou funkčnost. Několik lidí si rozebere úkoly a zapracuje je. Všechny změny nahrají do Gitu.

Abychom nemuseli nahrávat úplně všechny souboru znovu přes FTP (opravdu veliký projekt), chtěli bychom nahrát pouze soubory které se od poslední stabilní verze (než jsme implementovali novou funkčnost) změnily.

Takže by mi pomohl nástroj kam bych zadal hashe revizi a on by mi do archivu zabalil pouze soubory, které se změnily.

Neznáte nějaký takový nástroj?

Děkuji za rady
Název: Re:Git - získat soubory které se změnily
Přispěvatel: dustin 17. 09. 2013, 17:39:08
git bundle

Velice praktické, když git nemá přístup na net (např. aktualizace verze za firewallem u klienta, kdy je k dispozici jen scp - nejlépe ještě přes windows v citrixu :-) )

git bundle create bundlefile tag-od-posledniho-prenosu..stable

V gitu u klienta nastavíš repozitory na ten soubor a pracuješ s ním, jako se vzdáleným  repozitářem

git pull

Postup např.
http://stackoverflow.com/questions/3635952/how-to-use-git-bundle-for-keeping-development-in-sync

...
Název: Re:Git - získat soubory které se změnily
Přispěvatel: Sten 17. 09. 2013, 17:42:57
Zdravím.
Existuje v Gitu příkaz, který mi vyexportuje (ideálně do samostatného archivu) souboru u kterých došlo ke změně za zvolené období?

Příklad:
Přidávám do webového portálu novou funkčnost. Abych nemusel všechny soubory znovu nahrávat na server, vytáhlo by mi to pouze soubory, které se změnily.


Díky :)

rsync ;-)
Název: Re:Git - získat soubory které se změnily
Přispěvatel: Juraj 17. 09. 2013, 17:52:33
1. https://github.com/git-ftp/git-ftp mi funguje celkom dobre, ale iba jednym smerom, z lokalu na server.

2. mirror prikaz v lftp je genialny a funguje oboma smermi (az na to ze lftp je pomaly a skopiruje vsetky subory kde sa zmenil datum aj ked sa nezmenil obsah - preto je dobra ta kombinacia s git-ftp, ktory je ovela rychlejsi ). Len ho treba poriadne odladit aby si si neprepisal .git, aby si nezverejnil git repozitar na serveri a tak dalej.