Frage

Ich habe noch nie mit einem VCS gearbeitet, so bitte korrigieren Sie mich, wenn ich irgendwelche grundlegenden Fehler machen.

Für ein Projekt von mir, habe ich Subversion verwenden gewählt, und ich habe die Dokumentation gelesen. Wenn ich richtig verstehe, ist die Revisionsnummer für jeden Check-in erhöht. Allerdings bringt dies eine Frage auf. Ist es möglich, mehr als eine Datei zu einem Zeitpunkt, checkin (also der Zuwachs ist nur ein)? Auch, was, wenn, sagen wir, ein checkin nicht kompiliert ... wird die Versionsnummer erhöht werden?

War es hilfreich?

Lösung

  

Ist es möglich, mehr als eine Datei zu einem Zeitpunkt, zu checkin (also der Zuwachs ist nur ein)?

Ja, das ist möglich. Siehe Ist Subversion haben Change? von der offiziellen FAQ.

  

Auch, was, wenn, sagen wir, ein checkin nicht kompiliert ... wird die Versionsnummer erhöht werden?

Sie würden in der Regel zunächst prüfen, ob der aktuelle Stand der Dinge in Ihrer Testumgebung kompiliert, und prüfen Sie, wenn es funktioniert.

Sie können dies mit einem pre-commit Haken die Tests ausführt, und unter dieser Bedingung setzt sich mit dem Check-in.

Andere Tipps

Ja, Sie können sofort in mehreren Dateien überprüfen, und dies wird die Revision von 1 nur erhöhen.

In Ihrer zweiten Frage, ich denke nicht, du meinst „kompilieren“, da Revisionskontrollsysteme kümmern sich nicht um, ob der Code, den sie kontrollieren, ist compiliert. Ich denke du meinst „begehen“. In diesem Fall ist die Antwort, dass Subversion Commits atomar ist. Sie sind entweder vollständig funktionieren oder vollständig ausfallen. Es ist unmöglich, eine Multi-Datei, um zu versuchen zu begehen und hat einige Dateien erfolgreich sein, andere aber nicht. Eine nicht bestandene commit nicht die Versionsnummer erhöht.

Die Revisionsnummer ist Atom , was bedeutet, es auf die ganze Reihe von Änderungen für einen einzigen gilt begehen, indem man die Versionsnummer erhöht wird zu einem Zeitpunkt.

Die Revisionsnummer würde erhöht, unabhängig, ob es kompiliert oder nicht, wie Subversion hat keine Kenntnisse oder Vereinigung mit Ihrem spezifischen Technologie-Stack, um erfolgreich zu bauen, um zu bestimmen, oder nicht.

Sie würde in der Regel nicht begehen, wenn sie nicht lokal kompilieren. Wenn Sie das tun, du den Build brechen ", und sollte Geld in das Team‚Kitty‘setzen. ; -)

Subversion Commits sind Transaktions. Entweder wird die gesamte begehen erfolgreich ist, oder die gesamte Übertragung fehlschlägt. Wenn das gelingt begehen, dann wird die Versionsnummer erhöht. So thoe ganze Ihre verpflichten, unabhängig davon, wie viele Dateien, die es enthält, wird die Revisionsnummer verursacht um 1 zu erhöhen.

Subversion hat keine Möglichkeit zu wissen, ob Ihr Code kompiliert. Also, wenn Sie gebrochen Code begehen, dann begehen Sie gebrochen Code, aber die Versionsnummer erhöht noch. Sie können keinen commit (zumindest nicht leicht und nicht ohne erhebliche Unannehmlichkeiten).

Roll-Back

Wenn Sie einen Build-Server benötigen, kann ich empfehlen JetBrains Teamcity . Teamcity kommt mit einem Visual Studio-Plugin, das Sie tun, um eine ‚Pre getestet begehen‘ lässt. Das heißt, Sie Ihren Code auf dem Build-Server Teamcity einreichen, die den Code aufbaut. Wenn (und nur dann) die Build erfolgreich ist, dann Teamcity verpflichtet, um die Änderungen zu Subversion für Sie. Wenn der Build fehlschlägt, dann Teamcity benachrichtigt Sie und den Code nicht begehen. Es funktioniert gut und hilft zu verhindern, dass gebrochene embarassing baut:)

Einige Versionskontrollsysteme nutzen eine Revisionsnummer für jede Datei. Subversion verwendet eine einzige Revisionsnummer für das gesamte Repository. Wenn Sie ein Commit, können Sie haben Subversion die Änderungen zu übernehmen Sie in einer einzigen Datei, mehrere Dateien aus, oder auch jede Datei, die seit der letzten Kasse geändert wurde (siehe Dokumentation für svn add, svn revert und svn commit). Grabung behandelt den Commit als atomare Transaktion; das heißt, egal wie viele oder wie wenige Dateien, die Sie begehen, werden sie alle in einer einzigen Operation begangen, die entweder vollständig erfolgreich ist oder nicht vollständig (in diesem Fall das Repository wird nicht verändert). Jedes Mal, wenn Sie einen Befehl begehen erteilen, die Revisionsnummer für die gesamten Repository-Schritte.

Subversion weiß nicht, ob Ihr Code kompiliert, so gibt es alles, was Sie nicht in schlechten Code von der Überprüfung zu verhindern. Sie können Subversion jede Art von Datei zu speichern, nicht nur Quellcode, so Subversion nicht versucht, die Funktionalität alles überprüfen Sie überprüfen in (seit dem Versuch, ein Repository vollen Textdateien zu „bauen“ würde keinen Sinn machen und da es keine zuverlässige Möglichkeit für den Server Ihres Build-System zu erraten, oder wie Sie Ihren Code zu kompilieren). Davon abgesehen, ist es möglich, dem Subversion-Server zu sagen, ein Skript auszuführen, wenn ein Commit versucht wird, aber bevor die Transaktion verarbeitet wird (a pre-commit Haken genannt). Einige Leute benutzen diese Funktion mit einem Skript, das den Quellcode (einschließlich der eingehenden Änderungen) zu bauen versucht. Wenn das Skript nicht in der Lage ist, die Quelle zu bauen, es gibt einen Fehler zurück und Subversion weigert sich, die Transaktion (auf Ihrer Seite, würden Sie sehen, die Festschreibungsoperation fehlschlagen). Auto-Gebäude Quellcode ist nicht etwas, das in Subversion standardmäßig eingebaut ist, aber es ist nicht allzu schwer zu addieren, wenn es etwas, das Sie interessiert sind.

Für weitere Informationen empfehle ich das Lesen durch die (kostenlos) offiziellen Subversion Buch hoch „Versionskontrolle mit Subversion“ . Es ist leicht zu lesen, enthält fast alles, was Sie jemals über Subversion wissen möchten, und hat viele Beispiele.

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