2009-05-01 9 views
16

Ich bin gezwungen, Visual Source Safe 2005 bei der Arbeit zu verwenden. Ich würde das gerne mit einem DVCS kombinieren, damit ich lokal Dateien einchecken kann, ohne meine Mitarbeiter zu stören, wenn ein Fehler auftritt oder sie nicht kompiliert wird.Kombinieren DVCS mit Visual Source Safe

In meinen Versuchen mit Mercurial funktioniert es, aber verursacht ein paar seltsame Probleme. Es denkt nämlich, dass jemand anderes die Dateien ausgecheckt hat, die ich ausgecheckt habe.

hier meine Gedanken darüber, wie ich es schaffen sollte:

  1. Deaktivieren Sie die automatische Kasse.
  2. Arbeit vor Ort in Mercurial
  3. Als ich bin bereit, meine Änderungen zu schieben ...
    1. Clone mein Mercurial-Repository.
    2. Aktualisieren Sie mein Visual Source Safe-Repository
    3. Ziehen und Zusammenführen der beiden Repositorys mit Mercurial.
    4. Überprüfen Sie alles in Visual Source Safe.

Klingt das vernünftig? Ich höre immer schlechte Dinge über VSS, frage ich nur, ob ich diese Probleme aus erster Hand sehe?

+0

Die Frage an eine eine genauere umformuliert werden sollte eingecheckt: „Wie ein gutes Versionskontrollsystem saugen machen“ –

+0

Ich bin in der gleichen Position. Aber der Prozess, den du beschrieben hast, klingt schlimmer als vss selbst zu verwenden :-) –

+0

Ich pushe Änderungen selten, also wäre es nicht so schlimm. – WBlasko

Antwort

13

WBlasko

Ich habe das gleiche Problem gefunden. Ich wollte Dateien ändern und sie bei Bedarf zusammenführen, anstatt darauf zu warten, dass ein anderer Entwickler sie entsperrt. Die Lösung, die für mich gearbeitet wurde:

1) Laden Sie die neueste Version eines VSS-Projekt (I platziert alle VSS-Projekte unter vss):

c:\vss\projectA 

2A) Initialisieren mit Mercurial

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

2B) klonen, das Projekt zu dem Ort, an dem sie nach Belieben geändert werden konnten

hg clone vss\projectA myProjects\projectA 

3) Besorgen sie sich die neueste Änderung s von der VSS Kopie (überspringen, wenn Sie kommen aus 1 und 2)

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

4) arbeiten nach Belieben mit der geklonte Version. Später schieben Sie Ihre Arbeit mit der vss Kopie:

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

5) Nun führen Sie eine Kasse aller Dateien auf das VSS-Projekt

6) Run „hg update“ auf dem VSS-Projekt, um die Änderungen zu fusionieren zu den neuesten VSS-Änderungen.

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

7) verpflichten sich die Änderungen

C:\vss\projectA>hg commit 

8) Führen Sie eine VSS checkin (die Schlösser zu den anderen Leuten) zurück Schritte zu Schritt 3. Wiederholen Sie 3-8 für immer dann gehen die Freigabe .. .;-)

Auf diese Weise können Sie mit einem guten Versionskontrollsystem arbeiten und trotzdem mit älteren Projekten "reden". Sie werden auch genießen können sein: a) kein Problem mit gesperrten Dateien b) Sie Ihr Repository mit anderen teilen können, die wissen, wie Hg c) Zweige machen verwenden, etc

Nur vorsichtig sein erstes Update/Konflikte lösen, zu testen und dann VSS ausführen

Cheers, Luis

+1

Tolle Idee. Wie behandeln Sie VSS-Bindungen in VS? Wenn ich mich richtig erinnere, werden diese Bindungen in den Projekt- und Projektdateien gespeichert. Wenn Sie also in Ihrem "geklonten" Verzeichnis arbeiten, wird VS immer noch denken, dass die Lösung an VSS gebunden ist. – mlsteeves

+1

@mlsteeves: Ich denke, wenn Sie Auto-Checkout deaktivieren, wird es in Ordnung sein. –

+0

Das funktioniert, danke. Das einzige, was ich anders gemacht habe, ist, dass ich einen Tag namens "VSS" halte, der mir anzeigt, wo das vss \ projectA ist. Auf diese Weise kann ich 'hg status --ref xx: yy' (wobei xx und yy Revisionsnummern sind) erstellen, um die Liste der geänderten Dateien abzurufen, und dann nur diese Dateien auschecken. – mlsteeves