Domanda

Voglio usare Subversion con uno script basato il sistema di sviluppo, e si stava chiedendo che cosa fare di diverso per la mia solita situazione (C#/.NET).

Il normale giorno-per-giorno di aggiornamento/commit ciclo funzionano bene, come cambierà il monitoraggio e il confronto delle revisioni.Dove vorrei qualche consiglio circa la movimentazione di distribuzione.

Con questo sistema di script, non c'è distinto il passaggio di generazione coinvolti, invece, la distribuzione comporta il caricamento di uno script selezionato direttamente nell'applicazione host.

Modifiche ad uno script non sono necessariamente inclusi nella versione successiva, possono essere destinati per il rilascio dopo, o quello dopo ancora.

In un mondo ideale, mi piacerebbe essere in grado di allocare uno script in una data di rilascio, dicono che il "settembre 2009" release, una volta testato, e poi tirare fuori tutti gli script per il rilascio con un singolo comando.

Aggiornamento

Per quanto posso dire, né di Etichette o ChangeLists stanno per essere la risposta.

ChangeLists non persistente (non esiste nel repository) e ho bisogno di una soluzione che consente di revisione molto più tardi.

I tag sono effettivamente la stessa, come rami, contengono tutti file per impostazione predefinita, e devi solo scegliere quale revisioni.

Sto sperando per un nuovo approccio che inizia con un vuoto ramo in specifico le revisioni dei file potrebbe essere inserito come richiesto.

Aggiorna 2

Due esempi, mostrando come posso rispondere a questa situazione con featues in altri strumenti.Nota che non sto cercando di promuovere questi strumenti, visto che voglio usare subversion, sto solo cercando di capire come.

Con QVCS, Posso ottenere il mio risultato desiderato, applicando un'etichetta per una versione specifica di un file.Che etichetta rimanere sul posto, allegato alla revisione del file.In qualsiasi momento, non ho potuto fare il checkout, in una directory vuota, e specificare che solo i file con l'etichetta specificata, deve essere copiati.

Allo stesso modo, con StarTeam, Posso applicare un'etichetta a una revisione di file e il check-out solo i file con quell'etichetta.

È stato utile?

Soluzione

"In un mondo ideale, mi piacerebbe essere in grado di assegnare uno script in una data di rilascio, non dire 'release di settembre 2009', una volta che è stato testato, e quindi estrarre tutti gli script per che rilasciare con un singolo comando. "

Questo è esattamente ciò tag sono progettati per.

Altri suggerimenti

È possibile gestire i rilasci "future" con rami Subversion. Quando si apporta una modifica che è destinato per una futura release, si impegnano al ramo appropriata. Quando arriva il momento di tirare tutte quelle caratteristiche future nel tronco, unire il ramo.

Questo non è poi così diverso dal flusso di lavoro per l'utilizzo di Subversion con un linguaggio compilato, o anche per qualsiasi altro scopo.

Comune Branching sezione della Patterns libro di Subversion per ulteriori informazioni. In particolare, la sezione "Feature Branches" suona più appropriato alla situazione.

Una soluzione potrebbe essere quella di avviare un nuovo ramo utilizzando svn mkdir (invece di svn copy), e quindi in modo selettivo la copia dei file necessari dal ramo principale per mezzo di svn copy

vedo il problema - che non ha nulla a che fare con SVN. Si desidera memorizzare alcuni file in un ramo di release, ma non altri. Così uno dei due rami in tutta la directory di rilascio e quindi eliminare i file che non si desidera mostrare in là; o creare una nuova directory vuota e copiare solo i file che si desidera.

Il suo è così semplice. Non è necessario changelists o tag o qualsiasi cosa per nulla complesso, e nessun sistema di eversione sarà in grado di indovinare quali file si vuole. Personalmente, mi piacerebbe fare il ramo + CANC opzione come allora è possibile annullare l'eliminazione in un secondo momento, se si decide che non desidera che i file di nuovo.

Credo che con svn 1.6 si può avere esterni di puntamento per i singoli file.Quindi, se si desidera, è possibile creare un vuoto di struttura e di definire una serie di elementi esterni che portano il file che si desidera all'interno della struttura.Sarebbe una sorta di "live view" di un ramo.

Si potrebbe, forse, fare riferimento al file di versioni direttamente dal tronco o si potrebbe strato il tuo approccio e l'uso di un ramo di release per unire, in particolare, le revisioni, e quindi fare riferimento a tale ramo di rilascio nell'esteriorità del tuo "live view".In questo modo, caratteristiche di rilascio dalla fusione di revisioni di mantenimento della normale controllo di revisione e unire storia, e quindi un svn-aggiornamento sul server sarebbe estrarre i file in live struttura.

Il lato negativo sarebbe che sarebbe difficile passare a un davvero differente ramo (diciamo una vecchia tag, a causa di un problema nella nuova versione) - è necessario modificare manualmente tutti i vostri esterni definizioni.Questo potrebbe non essere un problema se sono tutti nella stessa directory, ma potrebbe essere un dolore se si deve andare a caccia in giro per loro.

Un po ' di informazioni su file esterni sono disponibili in svn 1.6 note di rilascio

Sembra che siete alla ricerca di metadati relativi script specifici. Così una possibilità è quella di memorizzare i propri script come file separati, e utilizzare proprietà svn . proprietà svn consentono di memorizzare coppie chiave-valore associati a un file.

Ad esempio, per rispecchiare il vostro esempio "etichetta", è possibile creare una proprietà per ogni file si decide di includere in una particolare release. In questo caso, creare una proprietà "settembre 2009" con il valore "vero".

È possibile selezionare solo i file con la proprietà "settembre 2009" durante la generazione del pacchetto di distribuzione.

L'uso dei nomi e rami sono utili quando si desidera monitorare le modifiche al repository nel corso del tempo, e per generare diff per vedere quali cambiamenti sono quelle - ma è una fotografia di tutta la repository ...

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