Come faccio a determinare se svn: mergeinfo è corrotto e come vorrei risolvere il problema?

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

Domanda

Ho il sospetto che ho mergeinfo corrotto, ma non sono sicuro. Qualcuno sa come mi piacerebbe fare una determinazione e quali risorse sono là fuori per problemi di aiutare a risolvere?

Ecco il problema. Il mio team ha recentemente trasferito a agile e usi dispongono di filiali (rami storia davvero) in cui diversi team lavorano sulle stesse fonti contemporaneamente. Come la storia raggiunge un elevato stato di allerta le squadre si fonde a tronco. Le unioni stanno prendendo giorni o settimane a causa di cambiamenti mancanti, cambiamenti inaspettati, e conflitti. Stiamo parlando di squadre di 5-10 persone e lo sforzo / churn sembra decisamente troppo caro.

La gente usa il modello di questa fusione a) PULL - merge tronco-to-ramo, risolutezza, di prova, impegnarsi b) PUSH - merge branch-to-tronco, risolutezza, di prova, impegnarsi c) ramo Ricrea (o di solito creare nuovo ramo storia e cadere vecchia dal momento che è fatto)

Alla fine di questo ramo e tronco deve essere in allineamento.

Problemi a cui stiamo assistendo:

  1. non cambia riportato durante tronco-to-unione tra rami compare nella successiva branch-to-tronco
  2. conflitti su svn: proprietà mergeinfo durante merge
  3. file mancante, ma modificare locale sul nuovo file aggiunto nel ramo e spinto al tronco
  4. locale di eliminazione in arrivo + (file eliminato sul tronco e ramo spettacoli come conflitto)

(1) non dovrebbe accadere. Il tiro di ramo in tronco dovrebbe mettere i due in sincronia per tutte le modifiche già sul tronco. I cambiamenti nel ramo-to-tronco merge sono cambiamenti che si sono verificati sul tronco. Così nella prima fusione avrebbero dovuto propagato in ramo, ma non lo fece. Ciò mette in evidenza la corruzione di dati mergeinfo che avrebbe “nascondere” modifiche del tronco.

(2) non dovrebbe accadere. SVN dovrebbe essere gestire i cambiamenti nel monitoraggio unione. Questo anche punti alla corruzione nei dati mergeinfo

(3) non dovrebbe accadere. Questo è un caso di un nuovo file aggiunto sul ramo. Dovrebbe apparire come un nuovo file aggiunto al tronco. Questo anche punti alla corruzione nei dati informazioni unione.

(4) Credo che questo sia un bug SVN e che non possiamo risolvere il problema. Ancora se questo fosse il nostro unico problema Sarei felice

Al momento siamo su un server 1.5.x svn con i client utilizzando svn 1.6.x e svn + ssh per il collegamento. Abbiamo in programma di andare fino alla ultima e più grande SVN dal momento che alcune correzioni possono influire i nostri problemi.

Ancora, sembra certo, come i nostri dati mergeinfo è sbagliato.

  • Unisce che non riportano tutte le modifiche
  • I conflitti in fusione di proprietà mergeinfo

Le eventuali buoni posti per me per iniziare la ricerca?

È stato utile?

Soluzione

Ho fatto alcuni esperimenti con SVN ramificazione / fusione, e ho scoperto che ci sono alcune situazioni in cui la fusione non funziona - per esempio le modifiche dal tronco vengono sovrascritti. Quindi, se si continua a usare SVN per questi rami, sarete nel mondo di dolore.

Ho fatto esperimenti simili con git e non ho trovato un modo per ottenere merge non corretta. Se lo spostamento a git potrebbe essere accettabile per squadra / gestione, vi raccomando vivamente di utilizzarlo.

Altri suggerimenti

Abbiamo avuto problemi simili a causa di circostanze simili e in gran parte li abbiamo risolti.

Il principale uno è questo:

Se si uniscono nel vostro ramo dal tronco dopo la creazione ramo, è necessario tronco bandiera con il ramo commit (usando svn merge --record-only), altrimenti quando si tenta di reintegrarsi di nuovo al tronco cerca di merge il commit del tronco verso la parte posteriore ramo in tronco.

Questo finisce ovviamente fino tornando modifiche al tronco dopo che la trunk-> ramo tardi impegnarsi, tende a provocare enormi conflitti (in particolare i conflitti albero se è stato creato un nuovo file o directory in tronco), ecc.

Quindi il nostro processo è quello di tronco sia mai sincronizzazione in un ramo dopo che è stato creato (funziona bene per brevi rami vissuti), o per effettuare le seguenti operazioni:

  • ramo b da tronco
  • commit tronco e il ramo
  • Reintegrazione tronco in filiale e si impegnano (risolvere i conflitti ma per il resto fare nessuna modifica, anche per la compilazione)
  • immediatamente fare uno svn merge --record solo del tronco-to-branch commettere revisione
  • risolvere eventuali altri problemi con il ramo e continuare lo sviluppo
  • Reintegrazione dal ramo al tronco quando fatto.

ho trovato: http://www.collab.net/community /subversion/articles/merge-info.html utile durante il lavoro fuori quello che stavamo facendo sbagliato.

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