2009-12-31 3 views
9

Proviamo a mantenere la proprietà 'svn: mergeinfo' solo nella cartella del ramo principale. Tuttavia, continuiamo a vederlo insinuarsi nelle sottocartelle. Siamo stati in grado di identificare alcune possibili cause:Come evitare svn: mergeinfos su sottocartelle?

  1. Spostamento di una cartella nel repository browser
  2. in movimento e/o pacchetti ridenominazione in IntelliJ
  3. Utilizzando vecchi clienti SVN

Can qualcuno fornisce una lista di cose che non dovremmo fare per evitare di creare queste proprietà per caso?

Gli strumenti che utilizziamo sono IntelliJ 8 (presto 9), Ankh, TortoiseSVN e SlikSvn.

risposta

1

Abbiamo scritto un hook/trigger SVN che rifiuta semplicemente commit in svn: proprietà su non trunk. Non ci siamo mai voltati indietro.

+0

Puoi condividere lo script di hook? –

+0

@WinstonSmith - Non lavoro più nella stessa azienda, quindi non ho accesso al gancio. Se è davvero importante per te, posso provare a chiedere in giro, ma dovrebbe essere molto semplice da implementare (se no, basta fare una domanda qui su come farlo). – ripper234

0

Non riesco a fornire questo elenco. Si consiglia di utilizzare l'hook svn che eseguirà l'azione utente registro che conduce alla modifica della proprietà di cartella ed emettere un avviso o rifiutare tale commit, qualsiasi cosa sia appropriata in base al proprio flusso di lavoro.

11

Sfortunatamente, i vecchi client svn lo fanno e anche gli strumenti basati su queste vecchie versioni di svn sono interrotti. L'unico modo per risolvere questo problema è eliminare le voci svn: mergeinfo create prima che vengano commesse. Poiché la maggior parte delle persone non sono consapevoli del fatto che essi sono creati, allora l'unico vero modo per far rispettare che è un gancio pre-commit, o semplicemente fare:

svn propdel --recursive svn:mergeinfo $ROOT/* 

pulirli fuori di tanto in tanto. Fai attenzione quando lo fai, in quanto distruggerà qualsiasi record di unioni parziali che tu hai avere fatto, quindi dovresti farlo solo se davvero non fai unioni parziali. L'interrogante no, e nemmeno noi nel nostro ambiente.

Il problema è stato risolto nei nuovi client svn, quindi il problema dovrebbe scomparire lentamente, ma ciò potrebbe richiedere del tempo prima che tutti gli strumenti nel flusso di lavoro vengano sostituiti.

Sulla base di un'altra risposta a questa domanda, una rapida spiegazione di ciò che causa il problema. Quando si esegue una copia di lavoro spostare o eliminare client svn precedenti alla 1.5.5, è stata creata una voce svn: mergeinfo spuria. Questo è resolved in svn 1.5.5.

+0

Questo non distrugge le informazioni di unione esistenti o le informazioni di unione sono ridondanti lì? –

+1

Nel nostro caso il mergeinfo era ridondante. Ma hai ragione distruggerà le informazioni di fusione parziale delle formiche che hai fatto. –

+0

risposta aggiornata per citare questo problema e per descrivere il problema e quando è stato risolto. –

0

L'esecuzione di unioni su sottocartelle o singoli file causa questo, ed è causarlo, perché deve registrare le informazioni di unione.

Il modo migliore è eseguire le unioni al livello principale e, se necessario, applicarlo in modo selettivo, annullare le modifiche che non si desidera unire e quindi eseguire il commit.

+0

Sto ottenendo questa proprietà anche senza effettuare alcuna unione su sottocartelle. – ripper234

+0

Per chi ha downvoted, si prega di fornire una ragione per questo? Non unire i sottolivelli è di vitale importanza se si desidera che le informazioni di fusione siano solo a livello principale. –

+1

Non ti ho minimizzato, comunque mentre quello che dici è corretto, il problema è che anche le copie stavano generando queste voci. È stato corretto in 1.5.5 (* non creare mergeinfo per le mosse o le copie wc-wc (r34184, -585)) –