Frage

Ich brauche nur den Quellbaum und seine Geschichte. Ich interessiere mich nicht für die Anforderungen / Fragen Sachen für jetzt. Ich spielte ein wenig witth der Befehlszeile, um herauszufinden, ob ich eine Liste der Änderungspakete für den Kofferraum und einige der Entwickler Pfade bekommen konnte. Ich dachte, es möglich sein sollte, ein Diff für jeden Änderungspaket zu extrahieren und dass alle Änderungen zu wiederholen verwenden, da die erste in git commit. So etwas wie folgt aus:

  1. verpflichten erhalten erste und fügen Sie es git
  2. abrufen CP
  3. bekommen diff für CP
  4. anwenden diff dir git Arbeits
  5. hinzufügen und Änderungen verpflichten git
  6. Wiederholung mit (2.) bis zum letzten CP

Sie können auch repleace Paket mit Checkpoint (wäre für mich gut genug sein).

Ein einfacher Weg wäre, nur einen CP Kasse und fügen Sie / commit git. Aber dann würden Sie verlieren den Überblick über hinzufügen, entfernen, verschieben und umbenennen Operationen.

Wer weiß, wie eine einheitliche diff bekommen von „si diff“? Das würde schon viel helfen.

Irgendwelche Ideen?

Edit2:
eine Antwort hinzugefügt, die zeigt, wie ich habe eigentlich die Migration ...

War es hilfreich?

Lösung

Das Problem mit MKS Integrity ist ihre einzigartige Repository, in dem alles befindet:

  • Anforderungen,
  • Testpläne,
  • Testfälle
  • Funktionen
  • Entwickler Aufgaben
  • Deployment-Anforderungen

Da diese Daten unabhängig voneinander entwickeln können, in ihrem eigenen Tempo, sie alle in einer Git-Repository zu importieren wäre eine schlechte Idee sein: Sie kann nur Klon alle der Inhalt einer Git-Repo ( auch wenn Sie die Tiefe dieser Klon begrenzen).
Das bedeutet, dass Sie alle Dokumente zu bekommen, auch wenn Sie nur daran interessiert, den Code sind.
Ein MKS Integrity Export würde bedeuten, zunächst viele Git-Repositories zu definieren, zu handeln, wie Submodule .


  

Ich brauche nur den Quellbaum und seine Geschichte.

Wie üblich, würde ich empfehlen, nur importieren:

  • die großen Labels (für etwas älter als ein Jahr, oder was auch immer Zeit Sie sich wohl fühlen werden Sie nicht in vollem Umfang die untersuchen müssen, weil es so alt ist)
  • alle Etiketten (Haupt- und Minderjährige) für die letzten Jahre.

Und ich würde nicht alle in importieren eine Git-Repository, wenn Sie sicher sind, dass alle Quellen repräsentieren ein System entwickelt als alle (und nicht mehr „Module“ entwickelt unabhängig)

  

Ein einfacher Weg wäre, nur einen CP Kasse und fügen Sie / commit git.

Das wäre der Weg zu gehen.

  

Aber dann würden Sie den Überblick über Add verlieren, entfernen, verschieben und umbenennen Operationen.

Nein! Du würdest nicht! Git schließen diese Operationen .
Das ist der Vorteil, dass eine Datei Content VCS .

Andere Tipps

Ich kann das eigentliche Programm nicht veröffentliche ich geschrieben, weil ich es nicht tat auf meiner eigenen Zeit. Allerdings kann ich schreiben, wie ich es tat. Es sollte einfach sein es mit jeder Skriptsprache zu wiederholen. Das Werkzeug, das ich schrieb migriert nur einen Zweig zu einem Zeitpunkt. Ich würde ihm sagen, welchen Zweig Ich möchte (zum Beispiel 1.21.1) und die Start- und End-Revision in der Branche (zum Beispiel 4 und 78 würden alle Überarbeitungen von 1.21.1.4 bis zu 1.21.1.78 Start wandern). Haben alle Zweige in einem Repo ich das .git Verzeichnis für den Import in verwenden.

liefern würde
  • beginnen Schleife von Start-Revision Revision endet
    • CURRENTREV = BRANCH.loopcounter
    • Erstellen Sie die Repo-Verzeichnis
    • bewegen Sie den .git dir in den Repo-Verzeichnis
    • die .gitignore-Datei in das Repo-Verzeichnis verschieben
    • chdir in das Repo-Verzeichnis
    • erstellen mks innerhalb des Repo dir Sandbox über „si createsandbox -P MKS_PROJECT_PATH --yes --projectRevision = CURRENTREV
    • holen Revision Beschreibung über "si viewprojecthistory --rfilter = range: CURRENTREV-CURRENTREV!", Captures
    • Extrakt Benutzer, Datum, Etikett (en), die Kommentars der vorigen Ausgabe
    • "git add".
    • Rohr extrahiert Informationen von oben in „git -qf begehen -“ (nicht tun kann -m wenn Sie mehrere Zeilen wie Kontrollpunkt Kommentar möchten)
    • Drop Sandbox über "si dropsandbox --yes index.pj"
    • bewegen .git und .gitignore an einem Ort speichern (für die nächste Iteration)
    • löschen Sie alle verbleibenden Dateien im Sandbox-Verzeichnis
    • Umzug nach Elternverzeichnis (..)
    • löschen Sandbox / repo dir
  • erstellen endgültig git dir
  • move .git und .gitignore in die endgültige git dir
  • "git reset --hard HEAD"

Fertig.

MKS verwendet eine Art von ASCII-Kodierung für die Zeichenfolge und git in der Regel verwendet UTF-8 so für Problem aufpassen, wenn Metadaten in git importiert (Benutzername, Kommentare, Tags usw.).

Für weitere Zweige dies zu tun:

  • im git Verzeichnis Kasse der Revision, wo die Verzweigung einen Zweig ( "git checkout -b NEWBRANCHNAME")
  • starten und erstellen
  • jetzt bewegt .git und .gitignore an den Ort speichern und löschen Sie den ganz dir
  • jetzt das Gleiche tun wie oben

Eine weitere Sache: "si" ist das MKS Kommandozeilen-Tool. Daher muss man entweder seinen vollständigen Pfad angeben, oder den Weg in den Suchpfad setzen.

FWIW, si diff ist leider derzeit nicht einheitlicher diff unterstützen. Es ist ein Antrag auf Änderung, so dass es zu tun zu haben, aber es ist noch nicht zu viele Kunden für diese Funktion zu fragen.

HAFTUNGSAUSSCHLUSS:. Ich arbeite für PTC (die erworbene MKS)

Dies funktioniert für Checkpoints ...

https://gist.github.com/2369049

Leider sind Checkpoints scheinbar das einzige, was wirklich Sinn von MKS macht -> GIT, als ein Kontrollpunkt wirklich die nächste Sache, die „Momentaufnahme“ ist die GIT eine Festschreibung nennt.

MKS hat so viele unvereinbare Konzepte (pro Dateiversionsverfolgung, Zweige, die nichts wie GIT Zweige sind, Checkpoints usw.), die alle unabhängig voneinander einen anderen entwickeln kann von einer es ist wirklich schwer zu sagen, wie eine sinnvolle Geschichte in GIT zu migrieren . Es gibt wahrscheinlich viele Möglichkeiten, es und keiner von ihnen mehr „richtig“ ist als die als nächstes zu tun.

Das heißt, ich würde gerne ein paar gute Ideen zu hören. :)

Ich würde gerne eine Lösung finden, die die pro-Datei in einer vernünftigen Weise Versionierung erfasst. In einigen Diskussionen haben wir rund um die Idee zu versuchen, in eine Reihe aufstellen MKS pro-Datei-Versionen von Commit-Zeit oder etwas geworfen. Auf diese Weise haben wir das Konzept der „Repo“ formulieren können sich entwickelnden durch eine Festschreibung, welche Änderungen in mehrere Dateien enthält.

Ich benutze diese Werkzeugwechsel-Pakete von MKS in Mercurial zu importieren, importieren Sie es git sollte recht ähnlich sein; oder Sie können importieren zuerst Mercurial und Git-Tool verwenden, um Mercurial nächste zu importieren.

https://github.com/arsane/py-mks2hg.git

Es wird versuchen, alle Änderungspakete, um herauszufinden, die unter dem angegebenen Projekt, und neue Mercurial-Repository, um begehen.

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