2009-05-01 13 views
16

Sono obbligato a utilizzare Visual Source Safe 2005 al lavoro. Mi piacerebbe combinarlo con un DVCS, così posso accedere ai file localmente senza interrompere i miei colleghi se c'è un bug o non viene compilato.Combina DVCS con Visual Source Safe

Nei miei tentativi con Mercurial, funziona, ma causa alcuni problemi strani. Vale a dire, pensa che qualcun altro abbia controllato i file che ho verificato.

Ecco i miei pensieri su come dovrei gestire:

  1. Disabilita auto-cassa.
  2. lavoriamo a livello locale in Mercurial
  3. Quando sono pronti a spingere i miei cambiamenti ...
    1. Clone mio repository Mercurial.
    2. Aggiornamento del repository di Visual Source Safe
    3. Estrarre e unire i due repository utilizzando Mercurial.
    4. Controllare tutto in Visual Source Safe.

Questo ragionevole suono? Ho sempre sentito parlare male di VSS, è solo chiedendo di vedere questi problemi in prima persona?

+0

La domanda dovrebbe essere riformulata ad una più accurata uno: "Come fare un buon sistema di controllo versione succhiare" –

+0

Sono nella stessa posizione. Ma il processo che hai descritto sembra peggio dell'uso di vss da solo :-) –

+0

Applico raramente le modifiche, quindi non sarebbe male. – WBlasko

risposta

13

WBlasko

Ho riscontrato lo stesso problema. Volevo cambiare i file e unirli quando necessario invece di aspettare che qualche altro sviluppatore lo sbloccasse. La soluzione che ha funzionato per me è stato:

1) Scarica l'ultima versione di un progetto VSS (ho messo tutti i progetti VSS sotto VSS):

c:\vss\projectA 

2A) inizializzare Mercurial

cd vss\projectA 
C:\vss\projectA>hg init 

2B) Clonare il progetto al luogo dove potrebbe essere cambiato a piacimento

hg clone vss\projectA myProjects\projectA 

3) Prendete l'ultima modifica s dalla copia VSS (salta se siete venuti da 1 e 2)

C:\myProjects\projectA>hg pull 
C:\myProjects\projectA>hg update 
(solve conflicts if any) 

4) Lavoro a piacimento con la versione clonata. Più tardi, spingere il vostro lavoro alla copia VSS:

C:\myProjects\projectA>hg push 
(don't run hg update yet, wait for VSS latestes version) 

5) Ora, eseguire un checkout di tutti i file al progetto VSS

6) Run "hg update" sul progetto VSS per unire le modifiche alle ultime modifiche VSS.

C:\vss\projectA>hg update 
(if there are conflicts, resolve them) 

7) confermare le modifiche

C:\vss\projectA>hg commit 

8) Eseguire un VSS checkin (rilasciando le serrature alle altre persone) Torna al punto 3. Ripetere i passaggi 3-8 per sempre poi .. .;-)

In questo modo è possibile lavorare con un buon sistema di controllo delle versioni pur continuando a "parlare" con progetti legacy. Sarete anche in grado di godere: a) Nessun problema con i file bloccati b) è possibile condividere il proprio repository con altri che sanno usare Hg c) rendono rami, ecc

Basta essere attenti al primo aggiornamento/risolvere i conflitti, di test e quindi eseguire VSS checkin

Cheers, Luis

+1

Fantastica idea. Come gestite i binding VSS in VS? Se ricordo bene, questi binding sono memorizzati nella soluzione e nei file di progetto. Quindi quando lavori nella tua directory "clonata", VS continuerà a pensare che la soluzione sia legata a VSS. – mlsteeves

+1

@mlsteeves: Penso che se disabiliti il ​​checkout automatico, andrà bene. –

+0

Funziona, grazie. L'unica cosa che ho fatto in modo diverso, è che tengo un tag chiamato "VSS" che indica a me dove si trova il vss \ projectA. In questo modo, posso fare 'hg status --ref xx: yy' (dove xx e yy sono numeri di revisione) per ottenere l'elenco dei file che sono stati modificati, quindi controllare solo quei file. – mlsteeves

Problemi correlati