Git - získat soubory které se změnily

Git - získat soubory které se změnily
« kdy: 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 :)


Re:Git - získat soubory které se změnily
« Odpověď #1 kdy: 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.

Re:Git - získat soubory které se změnily
« Odpověď #2 kdy: 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
Děkuji za možnost editace příspěvku.

Re:Git - získat soubory které se změnily
« Odpověď #3 kdy: 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, ale nezkoušel jsem to, tak nemám blužší informace.

dword

Re:Git - získat soubory které se změnily
« Odpověď #4 kdy: 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


dword

Re:Git - získat soubory které se změnily
« Odpověď #5 kdy: 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.

Juraj

Re:Git - získat soubory které se změnily
« Odpověď #6 kdy: 21. 11. 2012, 21:40:06 »
git whatchanged 

;)

Re:Git - získat soubory které se změnily
« Odpověď #7 kdy: 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

dustin

Re:Git - získat soubory které se změnily
« Odpověď #8 kdy: 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

...

Sten

Re:Git - získat soubory které se změnily
« Odpověď #9 kdy: 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 ;-)

Juraj

Re:Git - získat soubory které se změnily
« Odpověď #10 kdy: 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.