Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
- 2.43.2 → 2.52.0 keine Änderungen
-
2.43.1
2024-02-09
- 2.35.1 → 2.43.0 keine Änderungen
-
2.35.0
2022-01-24
- 2.11.4 → 2.34.8 keine Änderungen
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.3.10 → 2.8.6 keine Änderungen
-
2.2.3
2015-09-04
- 2.1.4 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
git cvsimport [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>] [-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>] [-C <git-repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>] [-a] [-m] [-M <regex>] [-S <regex>] [-L <commit-limit>] [-r <remote>] [-R] [<CVS-module>]
BESCHREIBUNG
WARNUNG: git cvsimport verwendet cvsps Version 2, die als veraltet gilt; sie funktioniert nicht mit cvsps Version 3 und neuer. Wenn Sie eine einmalige Migration eines CVS-Repositorys durchführen, sollten Sie stattdessen cvs2git oder cvs-fast-export verwenden.
Importiert ein CVS-Repository in Git. Es wird entweder ein neues Repository erstellt oder inkrementell in ein bestehendes importiert.
Das Aufteilen des CVS-Logs in Patch-Sets wird von cvsps übernommen. Mindestens Version 2.1 ist erforderlich.
WARNUNG: In bestimmten Situationen führt der Import zu falschen Ergebnissen. Bitte beachten Sie den Abschnitt PROBLEME für weitere Referenzen.
Sie sollten niemals eigene Arbeiten an den von git cvsimport erstellten Branches durchführen. Standardmäßig erstellt der initiale Import einen "master"-Branch aus dem Haupt-Branch des CVS-Repositorys, mit dem Sie frei arbeiten können; danach müssen Sie inkrementelle Importe oder beliebige CVS-Branches selbst mit git merge zusammenführen. Es ist ratsam, mit -r einen benannten Remote anzugeben, um die eingehenden Branches zu trennen und zu schützen.
Wenn Sie ein gemeinsam genutztes öffentliches Repository einrichten möchten, auf das alle Entwickler Lese-/Schreibzugriff haben, oder wenn Sie git-cvsserver[1] verwenden möchten, dann möchten Sie wahrscheinlich einen Bare-Clone des importierten Repositorys erstellen und diesen Clone als gemeinsames Repository verwenden. Siehe gitcvs-migration[7].
OPTIONEN
- -v
-
Ausführlichkeit: lässt cvsimport berichten, was es tut.
- -d <CVSROOT>
-
Die Wurzel des CVS-Archivs. Kann lokal sein (ein einfacher Pfad) oder remote; derzeit werden nur die Zugriffsarten :local:, :ext: und :pserver: unterstützt. Wenn nicht angegeben, versucht git cvsimport, sie aus
CVS/Rootzu lesen. Wenn keine solche Datei existiert, prüft es die UmgebungsvariableCVSROOT. - <CVS-Modul>
-
Das CVS-Modul, das Sie importieren möchten. Relativ zu <CVSROOT>. Wenn nicht angegeben, versucht git cvsimport, es aus
CVS/Repositoryzu lesen. - -C <Zielverzeichnis>
-
Das Git-Repository, in das importiert werden soll. Wenn das Verzeichnis nicht existiert, wird es erstellt. Standard ist das aktuelle Verzeichnis.
- -r <Remote>
-
Der Git-Remote, in den dieses CVS-Repository importiert werden soll. Verschiebt alle CVS-Branches in remotes/<remote>/<branch> ähnlich wie git clone standardmäßig origin verwendet.
- -o <Branch-für-HEAD>
-
Wenn kein Remote angegeben ist (mittels -r), wird der
HEAD-Branch aus CVS in den origin-Branch innerhalb des Git-Repositorys importiert, daHEADbereits eine besondere Bedeutung für Git hat. Wenn ein Remote angegeben ist, wird derHEAD-Branch remotes/<remote>/master genannt, was dem git clone-Verhalten entspricht. Verwenden Sie diese Option, wenn Sie in einen anderen Branch importieren möchten.Verwenden Sie -o master, um einen Import fortzusetzen, der ursprünglich vom alten cvs2git-Tool durchgeführt wurde.
- -i
-
Nur-Import: Führt nach dem Import keinen Checkout durch. Diese Option stellt sicher, dass das Arbeitsverzeichnis und der Index unverändert bleiben und erstellt sie nicht, wenn sie nicht existieren.
- -k
-
Schlüsselwörter entfernen: extrahiert Dateien mit -kk aus dem CVS-Archiv, um verrauschte Changesets zu vermeiden. Sehr empfohlen, aber standardmäßig deaktiviert, um die Kompatibilität mit früh importierten Bäumen zu erhalten.
- -u
-
Konvertiert Unterstriche in Tag- und Branch-Namen in Punkte.
- -s <Ersetzung>
-
Ersetzt das Zeichen "/" in Branch-Namen durch <Ersetzung>
- -p <Optionen-für-cvsps>
-
Zusätzliche Optionen für cvsps. Die Optionen
-uund -A sind implizit und sollten hier nicht verwendet werden.Wenn Sie mehrere Optionen übergeben müssen, trennen Sie diese durch ein Komma.
- -z <Toleranz>
-
Übergibt den Timestamp-Toleranzfaktor an cvsps, in Sekunden. Wenn nicht gesetzt, verwendet cvsps standardmäßig 300s.
- -P <cvsps-Ausgabedatei>
-
Anstatt cvsps aufzurufen, wird die bereitgestellte cvsps-Ausgabedatei gelesen. Nützlich zum Debuggen oder wenn cvsps außerhalb von cvsimport gehandhabt wird.
- -m
-
Versucht, Merges basierend auf der Commit-Nachricht zu erkennen. Diese Option aktiviert Standard-Regexes, die versuchen, den Quell-Branch-Namen aus der Commit-Nachricht zu extrahieren.
- -M <Regex>
-
Versucht, Merges basierend auf der Commit-Nachricht mit einer benutzerdefinierten Regex zu erkennen. Sie kann mit
-mverwendet werden, um auch die Standard-Regexes zu aktivieren. Sie müssen Schrägstriche escapen.Die Regex muss den Quell-Branch-Namen in $1 erfassen.
Diese Option kann mehrmals verwendet werden, um mehrere Erkennungs-Regexes anzugeben.
- -S <Regex>
-
Überspringt Pfade, die der Regex entsprechen.
- -a
-
Alle Commits importieren, einschließlich aktueller. cvsimport überspringt standardmäßig Commits, deren Zeitstempel weniger als 10 Minuten alt sind.
- -L <Limit>
-
Begrenzt die Anzahl der importierten Commits. Workaround für Fälle, in denen cvsimport Arbeitsspeicher leckt.
- -A <Autor-Konv-Datei>
-
CVS verwendet standardmäßig den Unix-Benutzernamen beim Schreiben seiner Commit-Logs. Durch die Verwendung dieser Option und einer Autor-Konv-Datei wird der in CVS aufgezeichnete Name auf den Autor-Namen, die E-Mail-Adresse und optional die Zeitzone abgebildet.
exon=Andreas Ericsson <ae@op5.se> spawn=Simon Pawn <spawn@frog-pond.org> America/Chicago
git cvsimport wird es so aussehen lassen, als ob diese Autoren durchgehend GIT_AUTHOR_NAME und GIT_AUTHOR_EMAIL korrekt gesetzt hätten. Wenn eine Zeitzone angegeben ist, wird GIT_AUTHOR_DATE mit dem entsprechenden Offset angewendet.
Zur Bequemlichkeit werden diese Daten jedes Mal, wenn die -A-Option angegeben wird, in
$GIT_DIR/cvs-authorsgespeichert und jedes Mal, wenn git cvsimport ausgeführt wird, aus dieser Datei gelesen.Es wird nicht empfohlen, diese Funktion zu verwenden, wenn Sie planen, Änderungen später mit git cvsexportcommit wieder nach CVS zu exportieren.
- -R
-
Erstellt eine Datei
$GIT_DIR/cvs-revisions, die eine Zuordnung von CVS-Revisionsnummern zu neu erstellten Git-Commit-IDs enthält. Die erstellte Datei enthält eine Zeile für jedes (Dateiname, Revision)-Paar, das importiert wurde; jede Zeile sieht wie folgt aus:src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
Die Revisionsdaten werden an die Datei angehängt, wenn sie bereits existiert, für die Verwendung bei inkrementellen Importen.
Diese Option kann nützlich sein, wenn Sie CVS-Revisionsnummern in Commit-Nachrichten, Bug-Tracking-Systemen, E-Mail-Archiven und ähnlichem gespeichert haben.
- -h
-
Gibt eine kurze Nutzungsmeldung aus und beendet sich.
AUSGABE
Wenn -v angegeben ist, berichtet das Skript, was es tut.
Andernfalls wird der Erfolg auf Unix-Art angezeigt, d.h. durch einfaches Beenden mit dem Exit-Status Null.
PROBLEME
Probleme im Zusammenhang mit Zeitstempeln
-
Wenn die Zeitstempel von Commits im CVS-Repository nicht stabil genug sind, um zur Reihenfolge der Commits verwendet zu werden, können Änderungen in der falschen Reihenfolge angezeigt werden.
-
Wenn Dateien jemals mehr als einmal "cvs import"iert wurden (z.B. Import von mehr als einer Vendor-Version), enthält der HEAD den falschen Inhalt.
-
Wenn die Zeitstempelreihenfolge verschiedener Dateien die Reihenfolge der Revisionen innerhalb des Zeitfensters des Commit-Matches überschreitet, kann die Reihenfolge der Commits falsch sein.
Probleme im Zusammenhang mit Branches
-
Branches, auf denen keine Commits gemacht wurden, werden nicht importiert.
-
Alle Dateien vom Verzweigungspunkt werden zu einem Branch hinzugefügt, auch wenn sie nie in CVS hinzugefügt wurden.
-
Dies gilt für Dateien, die zum Quell-Branch hinzugefügt wurden, nachdem ein Tochter-Branch erstellt wurde: Wenn zuvor keine Commits auf dem Tochter-Branch gemacht wurden, werden sie fälschlicherweise zum Tochter-Branch in Git hinzugefügt.
Probleme im Zusammenhang mit Tags
-
Mehrere Tags auf derselben Revision werden nicht importiert.
Wenn Sie vermuten, dass eines dieser Probleme auf das zu importierende Repository zutrifft, sollten Sie cvs2git in Betracht ziehen
-
cvs2git (Teil von cvs2svn),
https://subversion.apache.org/
GIT
Teil der git[1] Suite