Domanda

Ho verificato un repository svn esterno a cui ho applicato un paio di patch.
(L'applicazione delle patch può essere eseguita solo manualmente a causa di conflitti.)

Ora voglio essere in grado di conservare questa copia locale del repository remoto in modo corretto.
(Non ho altri diritti di accesso oltre a quelli letti sul repository remoto.)

Prima di tutto, devo essere in grado di effettuare il check-in delle mie modifiche locali in una sorta di sistema di controllo del codice sorgente, poiché sono stati eseguiti passaggi manuali nell'applicazione delle patch.

E in secondo luogo voglio ancora essere in grado di ricevere aggiornamenti dal repository remoto.

Qual è il modo migliore per raggiungere questo obiettivo?

È stato utile?

Soluzione

Suppongo di poter utilizzare un sistema di controllo del codice sorgente diverso per la mia copia locale rispetto a svn?
Per esempio. controllando la mia copia locale completa comprese le cartelle .svn in cvs.

Oppure potrei anche usare git-svn ma io & # 8217; m no certo se questa è la soluzione migliore.

Qualche suggerimento migliore?

Aggiornamento: Sì, git-svn sembra per essere la soluzione preferita.

Ma per la cronaca, si potrebbe anche usare hg con svn .

Altri suggerimenti

Un modo tradizionale per farlo è quello di prendere una versione esportata del codice e archiviarlo nel proprio repository. Se ci sono aggiornamenti sul codice, li unisci nel tuo repository. Puoi aiutare l'unione tramite ramificazioni intelligenti (ricerca dei rami dei fornitori). Contrassegna il codice nel tuo repository in base alle versioni del codice esportato che hai registrato.

Capisco SVK posso farlo in un ambiente puramente Subversion (l'ho usato per qualcosa come questo un qualche anno fa). Tuttavia, se desideri provare Git, git-svn potrebbe essere una scelta ancora migliore. Questo è quello che userei oggi.

Un avvertimento, però: se stai usando Windows, potrebbero esserci problemi a far funzionare git-svn . Ho avuto un successo limitato in quella zona e non uso git-svn su Windows per questo.

Con svnsync puoi conservare una copia di un repository svn, ma dal momento in cui modifichi la tua copia locale non puoi continuare a sincronizzare.

Suggerirei di usare git per il tuo ultimo lavoro quotidiano. Mantenere una copia locale di lavoro del repository svn e metterlo sotto controllo git. Quello sarà Git Master. Clona quel repository in una posizione diversa, dirama il ramo e lavora lì, applicando le tue patch direttamente al ramo.

Aggiorna regolarmente il tuo svn wc e tiralo nel tuo repository git, come master. Quindi, unisci master con il tuo ramo.

La cosa confusa è che avrai " due utenti git " ;, uno sarà la copia di lavoro del repository svn locale e l'altro il tuo ramo patchato.

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