Git Svn - tapasztalatok

Mivel elegge nyomatjak a neten, kiprobaltam a git-svn -t egy olyan projekten, aminel nem kritikus az svn:externals-ok hasznalata. Hat ize..

Azt tudni kell, hogy a git-svn segfaultol 1.5.x-es svn jelenleteben http alapu repository-knal. Ez egy nagyon regen ismert bug, asszem meg a svn 1.5.0_rcX-es verziojabol van (valahol talaltam kerneltrap linket ra, csak megoldast nem).

A parallel commit-kezeles alapvetoen jo dolog, de azt nem ertem, hogy a fetch/rebase soran miert nem regeli be az uj fajlokat, miert kell nekem egyesevel git add-olni oket (oke, tudom, git commit -a, csak nekem vannak temp fajlaim is, es azokat is hozza akarja adni - feleslegesen). Ez szerintem igy nem jo, es nincs is sok ertelme, de hat ez van. Megszoksz vagy megszo:ksz, hat igen... Mondjuk a hg rosszabb mert abba csak importalni lehet svn-t.

Ami nagy szivfajdalmam, hogy az svn:externals-ok egyaltalan nincsenek kezelve. Ez azert gond, mert rails fejlesztesnel nem a legjobb dolog egy folyamatosan frissulo - amugy svn - repot megeccer hostolni. Plusz a comment patchek is tolem idegen kodot tartalmaznak... nem jo ez igy sehogyse. Ugye pure svn eseteben ott van az svn:externals property, git eseteben meg gyk. a nagy semmi. Ha igazi git repo lenne, arra vannak tippek, de a svn repokra nem sok van.

Hozzászólások

"A parallel commit-kezeles alapvetoen jo dolog, de azt nem ertem, hogy a fetch/rebase soran miert nem regeli be az uj fajlokat, miert kell nekem egyesevel git add-olni oket"

Milyen új file-okat? Amik újonnan jelentek meg az upstream svn repo-ban, és a git svn fetch letöltötte őket? Vagy a te worktree-dben lévő untracked file-ok (ezesetben mi köze a fetch/rebase-hez)?

Amik ujonnan fetchelodtek le a fetch/rebase soran. Tehat mittomen, ugye ha meglevo repot huzok be, akkor jonnek a git repo szamara "uj" fajlok. Ezeket be kene regelnie szerintem a git repo hataskorebe...
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

git commit -a nem adja hozzá a fájlokat. Arra jó, hogy az összes változtatást egyszerre commit-old. A git add mindenképpen kell új fájlok esetén, ahogyan a git rm a feleslegessé válókra. Nem próbáltam ki a git-svnimport után azt, hogy svn-ben commit, majd git fetch/rebase, de az svn-ben hozzáadott fájlokat kellene, hogy lásd git-tel is utána. A rebase végén pedig a lokálisan git-add paranccsal hozzáadottakat is. Vagy nem erre gondoltál?

Amúgy ha már git, akkor lehet, ideje lenne elfelejteni az svn repót, csak történeti okokból meghagyni. Sokkal jobb és kényelmesebb, ráadásul nem is kell egyszerre két lovat megülni.

Na varj, akkor most megprobalok sorbamenni, mert sok temat erintettel.

1) A git commit -a nem tudom akkor, hogy mit csinal, mindenesetre a modositott fajlokat hozzaadja, vagy valami ilyesmi, mert a sima git commit aztat mondja, hogy o bizony nem tud committolni, amig git add-dal hozza nem adom a megvaltozott fajlt. A fajl maga amugy nem uj, az svn repoban tobbezer eve ott van, le is jon meg minden, csak mintha a git nem latna rendesen a fajlt.

2) a rebase/fetch utan nem latok uj fajlt a git commit -a paranccsal se, meg amugy se (az eleg erdekes, hogy a git commit -a a teljesen uj fajlokat is be akarja nyomni (mittomen, keletkezett valamiert egy temp fajl, es megjelent a kommit uzenetben, hogy akkor most ez a fajl is be fog maszni), holott erre nem keri senki)

3) Nem akarom elfelejteni az svn repot tobb okbol sem. Egyfelol egyelore csak probalkozom a git-tel, nem akarok veglegesen atallni ra, foleg azert nem, mert a rails fejlesztes soran rengeteget kell svn repokkal dolgozni (kulso pluginek), es ezt jelenleg ugy a legkonnyebb megoldani, ha az altalam fejlesztett alkalmazas is ilyenben van, mert akkor ki tudom hasznalni az svn:externals elonyeit (nem kell hostolnom es allandoan frissitenem sajat hataskorben a kulso plugin repojat a sajat projektem repojaban). A git svn ugye megint nem segit, mert abszolute nem kezeli az svn:externals -sal behuzott dolgokat. Szoval marad a jo oreg svn egyelore meg nagyon-nagyon sokmindenre.

Es megmondom oszinten, nekem nem sokkal kenyelmesebb egyelore a git. Nem erzem azt, hogy barmi pluszt tudna nekem nyujtani az svn-hez kepest. Az, hogy offline is lehet verziokovetni, engem joreszt hidegen hagy, mert nekem nem letszukseg a verziokovetes, ha nincs net, es nem tudok committolni, akkor nem committolok es ennyi. Ha borul a winyo, akkor a rajta levo committok is borulnak, szoval adatbiztonsagot nem ad.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

"az eleg erdekes, hogy a git commit -a a teljesen uj fajlokat is be akarja nyomni (mittomen, keletkezett valamiert egy temp fajl, es megjelent a kommit uzenetben, hogy akkor most ez a fajl is be fog maszni), holott erre nem keri senki"

git commit manpage nálam azt írja, hogy:

"-a, --all
           Tell the command to automatically stage files that have been
           modified and deleted, but new files you have not told git about are
           not affected."

és ennek megfelelően is viselkedik. A teljesen új file-okat a commit template alján is "Untracked files" címszó alatt listázza.

"Es megmondom oszinten, nekem nem sokkal kenyelmesebb egyelore a git. Nem erzem azt, hogy barmi pluszt tudna nekem nyujtani az svn-hez kepest."
(;
Nem akarok téríteni, használd csak tovább, csak úgy lehet megismerni és megtanulni, aztán majd magad is rájössz.