Ho letto moltissimi articoli "vai da svn a git" e altri articoli "git-svn workflow" sul web, eppure penso che spesso si occupino di situazioni troppo semplici. Sono spesso rivolti a ragazzi che vogliono solo usare git e hacker localmente, senza usare tutta la potenza di git, come pull, fetch, merge e simili tra più sviluppatori che avrebbero tutti clonato il repository svn con git-svn, quindi aspettiamo ancora di essere in grado di spingere le loro modifiche in qualsiasi momento al repository svn (ufficiale), e tornare a lavorare in git e condividere le loro cose ecc.È possibile che diversi cloni git-svn dello stesso repository svn siano in grado di condividere le modifiche, quindi git svn dcommit?
Ogni volta che questi articoli ammettono che non puoi fare tutto ciò che vorresti fare nel puro idiota, le conseguenze e gli eventuali fallimenti non sono mai spiegati chiaramente (o forse sono solo io?). Persino la pagina man di git-svn menziona i caveat, ma in realtà non in maniera estesa.
Sulla base di ciò che ho letto, ritengo che potrebbero esserci problemi quando git-svn viene usato in quel modo specifico, che descriverò qui sotto. Qualcuno può dirmi se ho ragione su questo?
Ecco la "voluto" modo di fare le cose:
- Abbiamo un progetto in un repository svn
- Developer Uno di git-svn-clone il repo svn. Inizia a hackerare le cose localmente
- Sviluppatore B git-svn-clone è lo stesso svn repo. Comincia a hackerare le cose da solo.
- Dopo averlo fatto per un po 'di tempo, magari aggiungendo gli sviluppatori C/D/... e avendo altri sviluppatori che eseguono commit "standard" sul repository originale, gli utenti git vorranno condividere il loro codice e fare tutti i tipi di magia git.
- Ogni uno di quegli utenti git vorrebbe essere in grado di spingere l'ora fusa modifiche svn
La mia domanda è (dcommit?): Sto sognando? Ho letto qualche tempo fa, in un libro di git credo, che git-svn-clone potrebbe creare repository git che sono ovviamente un "mirror" del repository svn, ma che i repository git creati in questo modo da diversi sviluppatori avrebbero diversi " id "e commits avrebbero hash diversi. Quindi la mia comprensione era che quei repository git non avrebbero condiviso alcun antenato git comune, e quindi non sarebbero stati in grado di usare tutti i comandi git necessari per condividere, unire e così via. È vero, stiamo andando ad affrontare problemi con questo flusso di lavoro?
A volte ho letto che questo potrebbe essere fatto, usando almeno un repository git "ufficiale" nudo, che sarebbe l'unico a essere git-svn-cloned, e tutti gli utenti git dovrebbero iniziare a formarlo. Allora hai bisogno di qualcuno che si occupi di questo repository git centrale, e raccolga le modifiche tra gli sviluppatori git, prima di mandare tutto al repository svn. Questo sarebbe l'unico modo per gli utenti git di essere "inconsapevoli" che il repository git originale provenga da svn, e permetterebbe loro di usare tutti i comandi git a loro piacimento. L'unica persona che avrebbe bisogno di essere fluente sia in git che in svn (e conoscere i caveat di git-svn) sarebbe il "gestore di fusione" (o qualsiasi altra cosa venga chiamata).
Sto fraintendendo completamente i caveat di git-svn? C'è un modo più semplice per farlo?
Grazie. Non sapevo del "guru". Beh, sembra che siamo bloccati. Non sono consigliate merge/pull, diffs e patch, questo non suona come la potenza di Git (tranne che per piccole cose fatte localmente e individualmente) –
Il guru dice che le patch distribuite per posta sono ok. – nes1983
"No merge/pull, diffs e patches" ..-- ma solo: "su un ramo abbiamo intenzione di git svn dcommit from". Ciò significa che sì * puoi * andare a unirsi a gergo/tirare/cherrypick e ottenere potere/magia; devi solo appianare le tue modifiche su un altro ramo; prima di spingerlo in svn. Non è troppo difficile, rebase o si fondono - dovresti farlo qui. – inger