Dove posso trovare le risorse "SVN per utenti Git"? [chiuso]


18

Quindi ho preso un lavoro in cui l'azienda utilizza SVN (ma in futuro si trasferirà a Git). Il problema è che non conosco SVN. Ho provato numerose query di Google e tutto ciò che riesco a trovare sono i tutorial SVN-> Git, i blog "Perché è Git meglio di SVN" e un particolare "cheat sheet" che dà (alcuni) comandi simili ...

A parte leggere il libro di O'Reilly su SVN, quali sono le brevi (ma non troppo brevi) istruzioni a SVN per gli utenti Git?


3
In breve: a) non c'è indice, b) svn up = git pull, c) svn commit = git commit && git push d) i rami sono emulati dalle directory ... ;-)
johannes

1
Non sono sicuro di come renderlo più
incentrato

5
Non c'è modo. Accanto a qualsiasi cosa c'è offtopic su P.SE.
JensG

@ agent154 non chiederci di essere un motore di ricerca di crowdfunding per te. Identifica il problema che stai riscontrando: il problema non è "dove posso trovare cose su svn" è "Sto cercando di fare qualcosa e non riesco a capire come farlo". Se quel qualcosa è specifico del comando 'svn' e stai lavorando sul modo di scriverlo, chiedi su Stack Overflow. Se quel qualcosa riguarda il flusso di lavoro e l'organizzazione di svn (quando diramare, quando unire, come lavorare con altri sviluppatori) - chiedilo qui.

2
Penso che il problema identificato sia la mancanza di risorse anche in qualche modo prontamente disponibili per comprendere SVN come utente Git. Francamente, troverei una discussione su questo super utile dopo aver sfogliato diverse pagine di risultati di Google / DuckDuckGo non trovando nient'altro che quanto menzionato dall'OP.
Metagrafo

Risposte:


8

Il riferimento canonico è il SubBook Redversion . Indipendentemente dalle tue abilità passate, leggi questo da fresco e otterrai tutte le informazioni di utilizzo di cui hai bisogno. Non è difficile o completamente alieno, la maggior parte delle persone dice che SVN è molto più facile da capire rispetto a git, quindi dovresti stare bene con solo un po 'di lettura dei comandi principali. Il capitolo sull'utilizzo di base dovrebbe metterti in funzione senza problemi.

Ci sono 2 differenze principali:

  • commit = push al repository centrale. Non ci sono rebase o commit locali, né pull.
  • la ramificazione è per directory. Meglio pensare all'intero repository come a una struttura di directory, la ramificazione è come creare un collegamento simbolico con la semantica copy-on-write. Mentre in git si ramifica l'intero repository e si passa da uno all'altro in modo che il nuovo ramo "sovrapponga" la propria copia di lavoro, con SVN è possibile scambiare parti del repository. Generalmente le persone si ramificano in una cartella di livello superiore (di solito chiamata branch), quindi il passaggio diventa molto più simile allo stile di lavoro 'overlay' di git.

La ramificazione è banale, la fusione non è affatto così grave come gli apologeti DVCS vogliono distinguere, specialmente se si attacca al trio "standard" di cartelle di livello superiore (chiamato trunk, rami e tag).

Ci sono alcuni bit in cui SVN batte git, mi vengono in mente directory sparse - in cui si controlla solo una parte del repository. Quando hai bisogno di più parti, aggiorni solo ciò di cui hai bisogno. Se hai un enorme repository (ad esempio un prodotto principale e un sacco di plugin), questo è geniale.

Ci sono alcuni bit che non sono buoni come git, mi viene in mente il temuto conflitto dell'albero - dove hai un conflitto a livello di directory (cioè qualcuno ha cancellato un file che hai modificato)

Se sei su Windows, usa TortoiseSVN. Oscilla principalmente.


Dipende. L'unione con SVN diventa negativa, quando i file sono stati spostati (che è essenzialmente una forma istruita di eliminazione + aggiunta gestita dallo stesso SVN) da qualcuno E cambiati da qualcun altro. A parte questo, bella risposta.
JensG

1
Ho menzionato il problema del conflitto dell'albero ... Tale stato è un problema per altri scms, anche se capisco che git usa un euristico per rilevare se il file spostato è lo stesso, può ancora sbagliare se le modifiche sono significative ( ad es. il file che viene diviso in 2).
gbjbaanb,

Git non ha bisogno di euristiche per rilevare le modifiche dell'albero, ma deve spostare l'utente con il file git mv. SVN ha svn move, ma dal momento che ramificarsi e fondersi in SVN è una specie di hack, non credo che possa risolvere automaticamente i conflitti dell'albero come fa Git ...
Idan Arye,

3
@IdanArye git mvè implementato come add + remove. git usa l'euristica per determinare se una mossa o una copia sono avvenute durante un commit (penso che l'impostazione predefinita sia "l'80% + del file è lo stesso?")
Izkata

3

Usa git svn se possibile. Sono stato nella tua situazione e dopo sei mesi di frustrazione sono passato a git svn e da allora sono felice.

Git svn consente di utilizzare il repository localmente e il commit sul server SVN viene quindi gestito da un oggetto git svn rebaseche reimposta le modifiche locali sul trunk di sovversione e quindi git svn dcommitche esegue il commit dei commit reimpostati.

Forse non è ottimale per l'utilizzo avanzato di Subversion, ma dal momento che stai usando git localmente tutto va bene.

Quando usi git clone non dovresti clonare la cartella radice della sovversione ma direttamente la tua directory di destinazione (clone trunk). Questo renderà git molto più veloce, altrimenti la tua copia di lavoro potrebbe diventare enorme.

Disclaimer : non so come sia la situazione quando si desidera creare filiali Subversion, ecc. I team con cui ho lavorato non hanno utilizzato filiali (solo io filiali git locali).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.