Qual è il modo meno doloroso per trasferire le modifiche locali Subversion per un'altra macchina?

StackOverflow https://stackoverflow.com/questions/573849

  •  05-09-2019
  •  | 
  •  

Domanda

sto lavorando a un cambiamento sul mio portatile. Non è pronto per essere sottoposto al repository ancora, ma mi piacerebbe continuare a lavorare sul mio desktop troppo. Il mio cambio di set è abbastanza grande e non solo contiene le modifiche, contiene anche i nuovi file e file eliminati pure.

ho potuto copiare la copia completa di lavoro locale ad un'altra macchina e ottenere i cambiamenti in atto. Tuttavia suona come una soluzione sporca (perché sto inquinante metadati su un'altra macchina), e sto trasferendo costruire artefatti inutilmente troppo.

ho provato il trasferimento di file .patch usando TortoiseSVN, ma continua a lamentarsi "patch appartiene ad una revisione più vecchio" (non è vero e perché ti importa?) O "linee non corrispondono" (sì non lo fanno, perché ho cambiato loro). Non mi è piaciuto "pop-up di errore continui" esperienza a tutti.

Non voglio installare Cygwin, così patch-riga di comando è fuori discussione.

Credo che l'ultima opzione sarebbe sborsare una nuova filiale per questa funzione e andare in un ciclo di "checkin / aggiornamento". Tuttavia, questi sono mostrati nella storia trac creazione di inquinamento lì.

Tutte le idee migliori? O qualcosa mi manca?

È stato utile?

Soluzione

Branching è la soluzione pulita. E ha l'ulteriore vantaggio di dare un backup mentre si sta lavorando su questo enorme cambiamento. Per non parlare, facile sincronizzazione dei futuri cambiamenti tra le macchine.

Ma, probabilmente si può uscire solo con zippare la directory di lavoro insieme e il dumping da qualche parte sull'altra macchina.

Altri suggerimenti

Hai provato a creare un nuovo ramo e utilizzando svn passare . Si trasferirà a una parte diversa del repository e mantenere le modifiche se si diramano dalla revisione iniziale di lavoro.

Per quanto riguarda approcci alternativi, si potrebbe aggiungere GIT al mix. modello di controllo del codice sorgente distribuito del GIT permetterebbe di spingere di modifiche avanti e indietro tra il desktop e laptop. E poiché GIT gestisce le proprie informazioni di modifiche sul file system locale i commit che si sta facendo su entrambi i lati, non apparirebbero nel flusso che il sistema TRAC è il monitoraggio.

Quindi, che, fondamentalmente, va 'in linea con la sovversione' e completare il lavoro con GIT impegna. Una volta fatto, il check-in l'intero kit e kaboodle al tronco sovversione.

Rami di funzione sono leggeri in Subversion e sono perfetti per l'isolamento geometria di lavoro specifico come questo. Se si sta utilizzando la sovversione 1.5 o maggiore di tutta la sincronizzazione e processo di fusione è molto più facile di quanto non fosse con 1.4.

Vorrei creare un ramo temporanea per questo scopo. In questo modo, si utilizzano solo strumenti SVN a vostra disposizione e non inquinano l'meta-meta o la copia dei manufatti.

Inoltre, sembra che si sta verificando nel codice ad intervalli distanziati e con una filiale anche prevenire la perdita dei dati in caso di crash del disco rigido.

Non l'ultima opzione, la prima:. Si dovrebbe aver creato una funzione-ramo già molto tempo fa, se ci sono davvero così tanti cambiamenti

È possibile farlo ancora facendo una copia svn dal lavoro copia di espandersi-directory sul server, in modo che non è necessario un "loop di checkin / aggiornamento", solo una checkin, basta una aggiornamento / switch, davvero.

Come     svn svn copy MyWorkingCopy: // theserver / progetto / rami / caratteristiche / my-funzione-ramo

Se avete solo bisogno di una replica sul desktop, trovo che Live Sync funziona perfettamente per questo scenario. Ce l'ho impostato per replicare mia cartella di cassa sul mio portatile e due desktop, il che mi dà esattamente lo stesso stato sui tre macchine. E tutto avviene in modo continuo sullo sfondo.

Oppure si potrebbe andare per un ramo e fare in modo di non dimenticare di commettere eventuali modifiche sul computer portatile prima di passare al desktop. : -)

Modifica In reponse al commento - sì, è possibile ottenere nei guai se si avvia la modifica dei file, mentre le due macchine sono in fase di sincronizzazione. La cosa peggiore che può succedere è di perdere alcune modifiche su una delle macchine. In pratica, le possibilità perché ciò avvenga sono piuttosto piccole.

Bene, la maggior parte delle persone sostengono che se il "cambio di set è abbastanza grande" si dovrebbe verificare le variazioni di (in un ramo in necessario)!

Si può provare a SVK . Dal post del blog e il sito SVK, tipico scenario di utilizzo SVK è

  • Specchio repository remoti esistenti,
  • quindi creare rami sulla vostra macchina,
  • localmente lavorare su questi rami, e
  • quando si è fatto, unirli di nuovo nel bagagliaio a specchio,
  • l'ultimo passo sarà aggiorna in modo trasparente il repository remoto.

Non ho alcuna esperienza hands-on di utilizzare SVK. Ma penso che corrisponde al proprio scenario. Questo post del blog descrive più in dettaglio http: //www.bieberlabs .com / archivio / 2004/11/30 / usando-SVK /

Credo che una versione per Windows di SVK è disponibile ( SVKWin32 ) e TortoiseSVN può quindi utilizzare il mirror locale del repository per l'aggiornamento / commit.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top