Frage

Wir denken darüber nach, von einem Versionskontrollsystem im Check-Out-/Bearbeitungs-/Check-In-Stil zu Subversion zu wechseln, und während der Evaluierung haben wir festgestellt, dass, wenn Sie eine Update-Aktion in TortoiseSVN (und vermutlich in jedem Subversion-Client?) ausführen, Wenn Änderungen im Repository, die auf von Ihnen bearbeitete Dateien angewendet werden müssen, keine Konflikte verursachen, werden sie automatisch/stillschweigend zusammengeführt.

Das macht uns ein wenig Angst, da es möglich ist, dass diese Zusammenführung zwar keine Kompilierungsfehler erzeugt, aber zumindest einige logische Fehler verursacht, die möglicherweise nicht leicht zu erkennen sind.

Ganz einfaches Beispiel:Ich arbeite an einer C#-Methode und ändere im hinteren Teil der Methode etwas Logik, und jemand anderes ändert den Wert, auf den eine Variable zu Beginn der Methode initialisiert wird.Die Änderung der anderen Person ist nicht in den Codezeilen enthalten, an denen ich arbeite, sodass es nicht zu einem Konflikt kommt.Es ist jedoch möglich, die Ausgabe der Methode dramatisch zu ändern.

Wir hatten gehofft, dass die Situation so aussehen würde, dass im Falle einer Zusammenführung die beiden Dateien angezeigt würden und zumindest eine einfache Option zum Akzeptieren/Ablehnen von Änderungen angezeigt würde, sodass wir zumindest wissen, dass sich etwas geändert hat und haben die Möglichkeit zu sehen, ob es Auswirkungen auf unseren Code hat.

Gibt es eine Möglichkeit, dies mit Subversion/TortoiseSVN zu tun?Oder stecken wir zu sehr in unserer derzeitigen Arbeitsweise fest und sollten es einfach machen lassen ...

War es hilfreich?

Lösung

Der beste Weg, dies zu umgehen ist es, die Entwickler zu erziehen. Nachdem Sie ein Update in TortoiseSVN tun zeigt es Ihnen eine Liste der betroffenen Dateien. verdoppeln Sie einfach jede Datei klicken, werden Sie die diff zwischen ihnen geben. Dann werden Sie in der Lage sein zu sehen, was zwischen Ihrer Version und der aktuellen Repository-Version geändert.

Andere Tipps

Es ist in der FAQ: Wie kann ich Subversion zu tun, automatische verschmilzt verhindern?

  
      
  1. In TortoiseSVN-> Einstellungen-> Allgemein-> Subversion Konfigurationsdatei, klicken Sie auf die Schaltfläche Bearbeiten.
  2.   
  3. Ändern Sie den [helpers] Abschnitt durch Hinzufügen

      diff-cmd = "C:\\false.bat"
    
         

    (man beachte den doppelten Backslash)

  4.   
  5. Erstellen Sie die Datei C: \ false.bat, die zwei Zeilen enthält

      @type %9
      @exit 1
    
  6.   

Hier ist ein Trick für TortoiseSVN:

Wie „auto- auszuschalten merge“in Subversion

Trick für svn.exe ist svn externes Diff-Tool auf ein Programm festlegen, die ständig fehl.

svn --diff-cmd=/bin/false

Wenn externes diff-Programm fehlschlägt, SVN kommt zu dem Schluss, dass der Konflikt nicht aufgelöst werden kann und würde es nicht übergehen.

Ich würde vorschlagen, Sie sollten lernen, mit dem natürlichen Subversion-Modell zu arbeiten, wenn überhaupt möglich. In der Praxis finden wir Konflikte sind selten, und die Art der Logik Konflikts sprechen Sie fast nicht existent (ich kann eine Instanz in den letzten 4 Jahren in unserem Repository nicht erinnern).

Das Team auf einen so kleinen Maßstab wie möglich Check-in Änderungen sollten (während Korrektheit beibehalten wird), anstatt eine ganze Tage Arbeit Dosieren bis es nur in einmal zu überprüfen. Dadurch wird die Möglichkeit des Tretens auf der Arbeit einer anderen Person zu reduzieren.

Wenn Sie sich Sorgen um über eine bestimmte Änderung sind Sie Subversion machen tut bieten eine Verriegelung Mechanismus können Sie weitere Änderungen an der Datei verhindert. Finden Sie im Red Book Kapitel über Sicherung .

Aus diesem Grund automatisiert (Einheit) Testen ein grundlegender Bestandteil der verteilten Softwareentwicklung ist. Im Beispiel geben Sie sollte mindestens eine Einheit Test auf svn update fehlschlagen und machen Sie auf den Fehler.

Denken Sie daran, was Subversion ist: a. Versionskontrollsystem, kein perfekt arbeit-Code-Fusion-Tool

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top