2009-06-05 9 views
6

Wenn ich einen cvs-Status meines Projekts mache, erhalte ich verschiedene Revisionsnummern für verschiedene Dateien. Was passiert hier? Sollten nicht alle Dateien dieselbe Revisionsnummer haben?CVS-Revisionsnummern

Antwort

9

Die CVS Revisionsnummer gibt an, wie oft diese Datei wurde geändert. Wenn Sie in einem Projekt konsistent etwas konsumieren möchten, müssen Sie nach der Übergabe cvs tag verwenden, um alles einheitlich zu kennzeichnen.

+1

Das Kommen von SVN hatte eine erschütternde Erfahrung mit CVS heute. Ich musste mein Projekt in einen bestimmten Zustand zurückversetzen. Also überprüfte ich die Versionsnummer einer der Dateien in dem Commit, zu dem ich zurückkehren wollte, und versuchte, mein Projekt mit dem Befehl update -r auf diese Revision zu aktualisieren. Alles wurde geschraubt. Dann habe ich die Zeit des Commits gesehen und das Projekt mit update -D aktualisiert. Ist dies der beste Weg, oder gibt es eine andere Methode? – Abhi

+0

Ja, es gibt eine andere Methode. Es wird Taggen genannt. Wenn Sie CVSNT verwenden, gibt es auch Commit-IDs (automatisch generiert) und Bug-IDs (benutzerdefiniert). –

+0

Erklärung der CVS-Nummern: http://www.network-theory.co.uk/docs/cvsmanual/Revisionnumbers.html – SashaN

1

CVS hat keine globalen Revisionsnummern, sie sind pro Datei. (In der Tat, CVS hat nicht einmal atomare Festlegungen)

+1

CVSNT hat jedoch atomare Commits. –

+0

Hmm, danke für die Klarstellung. :) – Rytmis

6

nein. cvs hat keine einzige Revisionsnummer wie moderne Versionskontrollsysteme. Jede Datei hat ihre eigene Version. Wenn es irgendeinen Weg gibt, können Sie zu einem anderen Versionskontrollsystem wie Subversion, Mercurial, Git ... gehen.

+0

Also ist es anders als SVN, wo jedes Commit die Revisionsnummer des Kopfes ändert? – Abhi

+0

Ich bin gezwungen, CVS zu verwenden :(. – Abhi

+2

"Der Kopf" hat keine spezifische Revisionsnummer in CVS. HEAD ist nur eine Art von virtuellem Tag, das die letzte Revision jeder Datei auf ihrem festgelegten Standardzweig identifiziert (normalerweise der Stamm) . –

1

CVS war ursprünglich eine Reihe von Skripten über die Datei-orientierte RCS, und es entkam nie seiner Geschichte. Ein CVS-Repository ist eine Sammlung von RCS-Dateien, die in der gewünschten Verzeichnisstruktur angeordnet sind, sowie einige Sperrverzeichnisse. Denken Sie daran, und Sie werden viele CVS Idiosynkrasien verstehen (und vielleicht in der Lage sein, dies zu antizipieren). (Später VCS hatte die Idee von Verzeichnissen eingebaut, sowie Dinge wie Dateikontinuität über Umbenennen.)

Die CVS Idee eines globalen Zustands ist ein Tag, das manuell angewendet werden muss. Dies geschieht durch Markieren jeder einzelnen RCS-Datei. Es ist auch möglich, eine Kopie des Repositorys zu einer bestimmten Zeit zu erhalten, aber dies ist nicht notwendigerweise konsistent, da große Commits nicht notwendigerweise atomar sind.

Also, nein, die CVS-Revision einer Datei ist die RCS-Revision im Repository und hat nichts mit einer anderen Revisionsnummer zu tun. Schwitzen Sie nicht die Revisionsnummern.