2009-12-30 8 views
17

Questo è possibile con TortoiseSVN ?:Come avere TortoiseSVN congelare sempre svn: gli esterni per i tag

congelare sempre svn:externals per i tag

lo scenario è nostro tronco utilizzerà sempre la revisione 'testa' per gli esterni, tuttavia, quando creiamo "tag" vorremmo che avessero un set di revisione per gli esterni per "congelarli" correttamente in un momento specifico.

Aggiornamento

Grazie a tutti per il vostro feedback/informazioni.

Dal momento che non ho trovato nulla che potesse soddisfare completamente le nostre esigenze (provato smartsvn e svncopy.pl) ho fatto una console app che finora ha superato tutti i nostri casi di test.

Una panoramica di alto livello: l'app prende un URL di repository quindi cerca tutti gli elementi esterni e aggiunge l'ultima revisione di commit per loro: faccio un svn info e ottengo la "revisione di commit".

L'app funziona sia con cartelle esterne sia con file singoli.

Ecco il codice sorgente e file di installazione completo: http://svnxf.codeplex.com/

+1

Che dire di svncopy.pl non ha soddisfatto le tue esigenze? – kostmo

+0

Si prega di inviare soluzioni come risposte, non in domande. –

risposta

6

ho trovato questo post di oggi, come ho cercato una soluzione per lo stesso identico problema. Alla fine ho scoperto che TortoiseSVN nella loro ultima versione supporta questa funzionalità desiderata: TortoiseSVN 1.7 Release Notes.

Speriamo che questo aiuti gli altri a trovare questo post quando effettuano ricerche sullo stesso problema.

0

È possibile specificare la revisione in esterni:

third-party/skins -r148  http://svn.example.com/skinproj 

Vedi svnbook

+0

grazie - Sto cercando un processo automatico. – dnndeveloper

+0

Non penso che ci sia un modo per farlo automaticamente, altri poi scriptare/programmare qualcosa da soli e usarlo sempre per il tagging –

6

La procedura consigliata è di usare sempre un revisione esplicita (non HEAD) nelle definizioni esterne. Dal documentation:

Si dovrebbe prendere seriamente in considerazione utilizzando i numeri di revisione espliciti in tutti i tuoi esterni definizioni. Ciò significa che puoi decidere quando estrarre un'istantanea diversa da di informazioni esterne e quale snapshot estrarre. & Hellip; Per i progetti software , questa potrebbe essere la differenza tra una compilazione riuscita e una fallita di una precedente istantanea della base di codice complessa.

Per rispondere direttamente alla tua domanda: no, ’ Non è possibile cambiare automaticamente le definizioni esterne quando si codifica utilizzando TortoiseSVN. Dovrà essere fatto manualmente durante la creazione del tag.

+0

Sono completamente d'accordo con questo per un tag, tuttavia il trunk userà sempre l'ultimo. – dnndeveloper

+1

Anche il trunk non deve usare l'ultima. Se a una dipendenza viene applicato un cambio di interruzione, sono disponibili diverse revisioni per le quali la struttura del tronco è interrotta. Invece, dovresti usare revisioni fisse e quindi (a) aggiornare la definizione esterna (b) aggiornare il tuo codice per supportare le modifiche nella dipendenza, tutto in un colpo solo. –

2

Si consiglia di provare SmartSVN che converte facoltativamente HEAD-esterni in esterni fissi durante la creazione di tag o rami. È possibile trovare questa opzione (Revisioni esterne: (o) Invia come è() Correggi tutto() Correzione tranne che in basso) nella parte inferiore delle finestre di dialogo Aggiungi tag/Aggiungi ramo.

+0

provato questo e sembra funzionare solo con le cartelle esterne e non il supporto di file esterni singoli in 1.6 + ... primo client per farlo funzionare correttamente avrà un vantaggio rispetto al resto! – dnndeveloper

+0

In base a http://www.syntevo.com/smartsvn/changelog.txt, SmartSVN 6.5.2 corregge anche i file esterni. – Mot

3

Puoi provare svncopy.pl (trovalo su google) È uno script perl che risponde alle tue necessità.

+0

Per i più pigri: https://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svncopy/ – kostmo

1

Vorrei secondo Michael.

In aggiunta a raccomandazione da SVN documentazione:

  • utilizzo revisioni non fisse in svn: gli esterni rende più difficile da aggiornare copia di lavoro ad una revisione specifica (ad esempio, nel corso delle indagini bug)
  • Log di directory con svn : esterni saranno incomplete che possono fornire informazioni false sui set di cambiamento tra le revisioni
  • ramificazione e la fusione può diventare più complicato

Generalmente, SVN sembra essere progettato principalmente per il codice contenuto in una directory comune. svn: vengono aggiunti esterni (anche per nome) per fare riferimento a repository esterni. Quindi mi aspetterei anche altri problemi sopra menzionati.

Sulla mia esperienza è necessario l'utilizzo di svn: le versioni esterne per revisioni non fisse provengono spesso da una struttura errata nel repository.

Può essere che non è il tuo caso, ho solo consiglio di prendere in considerazione questi punti ...

0

So che questo non è per TortoiseSVN, ma se si utilizza Eclipse con sovversiva, è possibile fare clic sul progetto e seleziona team-> tag. Subversive blocca di default gli esterni e formatta le proprietà in modo abbastanza gradevole.

+0

grazie - mi è stato anche alla ricerca di qualcosa che possiamo mettere nel nostro generazione automatica. – dnndeveloper

1

Aggiornamento

Grazie a tutti per il vostro feedback/informazioni.

Poiché non sono riuscito a trovare nulla che potesse soddisfare completamente le nostre esigenze (provato smartsvn e svncopy.pl), ho creato un'app console che finora ha superato tutti i nostri casi di test.

Una panoramica di alto livello: l'app prende un URL di repository quindi cerca tutti gli elementi esterni e aggiunge l'ultima revisione di commit per loro - faccio una "svn info" e ottengo la "revisione di commit".

L'app funziona sia con cartelle esterne sia con file singoli.

Ecco il codice sorgente e file di installazione completo: http://svnxf.codeplex.com/

Problemi correlati