Ich fragte vor ein paar Tagen how to commit an arbitrary directory tree in ClearCase und die Antwort, die ich erhielt, war die Verwendung des clearfsimport
Tools. Dies hat einwandfrei bisher gearbeitet und kann „Import“ in Clearcase (auf eine dynamische Sicht) beliebige Verzeichnisbäume (aus einer externen Datei-System-Verzeichnis):Wie führe ich ein Update auf einem beliebigen Verzeichnisbaum durch?
clearfsimport -recu -nset /some/external/directory/foo .
Mein Workflow ist, dass ich alle meine Arbeit tun und Testen in diesem externen Verzeichnis (foo
) und wenn ich glücklich bin, verpflichte ich meine Quellen zu ClearCase mit dem clearfsimport
Werkzeug wie oben beschrieben. Dies hat bisher beim ersten Commit funktioniert, aber jetzt möchte ich die geänderten Quellen importieren. Effektiv muss ich anstelle des vorhandenen Verzeichnisses foo
einen neuen Verzeichnisbaum importieren. Die Änderungen können allgegenwärtig sein: Dateien/Verzeichnisse hinzugefügt, entfernt oder umbenannt, Dateien in Verzeichnisse oder Symlinks geändert (und umgekehrt). Effektiv sprechen wir vielleicht über zwei sehr unterschiedliche Verzeichnisbäume mit einer sehr ausführlichen Ausgabe diff -r
.
ich den folgenden Workflow verwenden möchten:
ct co .
ct rm foo // remove existing dir from view
ct ci .
clearfsimport -recu -nset /some/external/directory/foo . // import the new dir version
Sie mit dem obigen Ansatz sehen Sie in Bezug auf die Geschichte Probleme, etc?
Für die vollständige Offenlegung pflege ich mein Projekt (in /some/external/directory
) git mit und erstelle ich so eine „saubere“ Kopie meines Projektes vor clearfsimport
(Entfernen von git-spezifischen Dateien wie .git
, .gitignore
etc.) ausgeführt wird. Ich habe normalerweise eine detailliertere Geschichte in git, aber ich bin nur daran interessiert, die Geschichte von bestimmten bemerkenswerten "Meilensteinen" in ClearCase für andere Teammitglieder zu bewahren, die meinen Code und seine Entwicklung im Laufe der Zeit betrachten möchten. Nichtsdestoweniger möchte ich (zumindest vorläufig) keine Werkzeuge verwenden, um git mit ClearCase zu verbinden und es vorziehen, die Dinge einfach zu halten.
Ich erkläre, dass der Workflow, den ich versuche einzurichten, nur eine Möglichkeit ist (externes Verzeichnis zu ClearCase) und die ich in eine dynamische Ansicht importiere.
auf der Manpage der Suche nach clearfsimport
ich so etwas wie ‚zwei Pässen‘ sehen wie -rmname
erwähnt und Optionen sind, die Sache macht mir, dass es möglich ist, läuft nur clearfsimport
mit dem Ziel eine bestehende Verzeichnisstruktur zu sein (dh ohne bis ct rm
es zuerst). Aber ich bin mir nicht sicher, welche Beschwörungsformel genau zu verwenden ist und ob damit Fälle behandelt werden, in denen sich ein bestimmter Name auf verschiedene Arten geändert hat (zB von Datei zu Verzeichnis oder von Verzeichnis zu Symlink oder von Symlink zu Datei) oder wie Umbenennungen gehandhabt werden Geschichte.
Ich bin nur ein bisschen unruhig, dass 'clearfsimport' wird das Richtige tun, wenn es um Namen, deren Typ kommt hat sich geändert (zB von Datei zu Symlink oder von Symlink zu Verzeichnis), deshalb dachte ich, dass 'ct rm' zu einer sauberen Weste führen würde. Aber ich verstehe Ihre Antwort zu sagen, nur 'clearfsimport' zu vertrauen, um das Richtige zu tun ... –
@MarcusJuniusBrutus Ich stimme zu, dies muss verschachtelt werden für Randfälle, aber im Allgemeinen ist' Clearfsimport' für diesen Anwendungsfall gemacht . – VonC
@MarcusJuniusBrutus Das Problem mit RM ist, dass Sie den Verlauf für alle gemeinsamen Dateien, die geändert wurden, vollständig verlieren. ClearCase wird sie als neue Elemente ohne Historie sehen. – VonC