2011-12-27 18 views
22

Fondamentalmente voglio mettere in scena le mie modifiche senza spingerle e senza cambiare ramo. Questo mi permette di fare un po 'di lavoro, commit quando sono a un buon punto di arresto, e poi continuare a lavorare nello stesso ramo. Se mi incasino, posso revert, se aggiungo nuove modifiche, posso di nuovo commit.SVN ha un equivalente al commit di git (senza push)?

Mi rendo conto che è possibile creare un ramo di funzionalità in SVN per tenere traccia di questi cambiamenti, ma ancora una volta, mi piacerebbe farlo pur rimanendo nello stesso ramo/tronco. Anche l'equivalente di git stash sarebbe sufficiente, anche se sembra che SVN non abbia quella caratteristica.

+0

Vedi anche: http://stackoverflow.com/a/527048/59087 –

risposta

31

Il punto di controllo della versione distribuita è questa caratteristica dei commit locali che può essere successivamente unita al repository upstream. SVN non è distribuito e non può farlo. L'ostacolo centrale è la numerazione di revisione lineare di SVN, che implica che ogni cliente deve ottenere un nuovo numero di revisione identificativo per ciascun changeset. Poiché "allocare" un numero di revisione e successivamente utilizzarlo porterebbe a tutti i tipi di condizioni di gara, le azioni "commit" e "push" sono atomiche in SVN e in ogni sistema di controllo delle versioni non distribuito.

Detto questo, il frontend SVN di git è una buona scelta, come suggeriva Joe. Garantisce che SVN non veda mai i tuoi commit locali e individuali e che il "push" sia tradotto in un unico commit SVN singolo.

+2

Se si fa riferimento a git-svn, una push traduce ogni commit git in un commit svn. Tuttavia, è possibile schiacciare manualmente i commit prima di premere. –

25

In base alla progettazione di SVN, tuttavia, è possibile utilizzare il comando git svn di git come front-end per SVN. Ti consente di eseguire operazioni push/pull da un remoto SVN, ma utilizza ancora git localmente, e quindi di eseguire commit locali senza doverli spostare nel repository SVN.

Qualcosa di simile potrebbe aiutare: http://www.viget.com/extend/effectively-using-git-with-subversion/

+5

+1: Git è il front-end perfetto per Subversion. – Johnsyweb

+2

Dalla mia comprensione di SVN è basato molto centralmente. Significato se commetti qualcosa che va al repository centrale. Altri IDE potrebbero fare uno "Snapshot" locale mentre apportate le modifiche e salvarlo. – Joe

1

si potrebbe essere in grado di utilizzare trapunta per fare questo, anche se comincia a diventare difficile se desideri solo impegnare una parte della coda trapunta a svn.

Problemi correlati