2009-12-31 11 views
15

Ich würde gerne sehen, wie TFS für meinen Befehl funktioniert. Daher möchte ich unser aktuelles GIT-Repository in die TFS-Datenbank verschieben. Wir haben GIT für die vorherrschende Branching-Unterstützung verwendet, daher möchte ich TFS 2010 verwenden, um dieses Problem zu beheben.Git zu TFS Source Control Migration

Jetzt ist Frage. Wie exportiere ich unser GIT Repo nach TFS? Offensichtlich ist es eine Art Skript. Hat das jemand gemacht? Irgendwelche Vorschläge?

Vielen Dank.

+17

Warum zum Teufel würde jemand von Git zu TFS bewegen? – hasen

+14

Zwei Worte: besseres Werkzeug. Ich weiß, dass Git viel Hype haben. Und Mr. Torwalds selbst hat eine Menge davon geschrieben, aber mit dieser Sache SAUGT interagiert. Ich habe es seit 19 Monaten verwendet, ich habe es dem Team vorgestellt und ich denke nicht, dass es eine Silberkugel ist. Alle UI-Tools sind lahm. Die Befehlszeilenschnittstelle ist ausführlich. Ich habe die Skripts zur Unterstützung meines Workflows, aber ich bin nicht stolz darauf. Plus TFS ist mehr als Quellcodeverwaltung. Es ist eine komplexe Lösung: Bug-Tracker, Build-System, VS-Integration, SP-Site für Nicht-Entwickler, um den Prozess zu beobachten und Bugs, etc. –

+0

Git-Erweiterungen https://code.google.com/p/gitextensions/ wird schnell gemacht Artems Kommentar veraltet. Eine viel schönere UI als die gebündelten UIs. –

Antwort

9

Microsoft haben nun ihre eigenen GIT veröffentlicht < -> TFS-Erweiterung für GIT: GIT-TF

Dies ermöglicht eine neue GIT-Repository von TFS ziehen oder die Konfiguration GIT zu ermöglichen TFS schiebt, das ist, was Sie tun möchten, :

(aus der Dokumentation)

Für ein Team mit einem bestehenden Git Repo arbeitet, würde verwenden Sie die folgenden Workflow-Entwickler teilt Änderungen an TFS Git-TF verwenden.

# Configure the existing repo's relationship with TFS 
git tf configure http://myserver:8080/tfs $/TeamProjectA/Main 

# Fetch the latest changes from TFS and merge those 
# changes with the local changes. 
# Note, merging is important when working in a team configuration. 
# See "Rebase vs. Merge" below. 
git tf pull 

git commit -a -m "merge commit" 

# Check in the merge commit as a single TFS changeset 
git tf checkin 

# Push the merge commit to the origin 
git push 

Darüber hinaus kann die bereits existierende Open-Source-GIT-TFS Lösung verwendet wird (von nur Windows, Microsoft-Lösung verwendet Java und ist Cross-Plattform), auf Git to TFS 2008 one way migration (with history) in einer Antwort beschrieben

+0

Diese Lösung funktioniert nur ohne Zweige. Wenn Sie Zweigstellen haben, ist eine bessere Lösung die Verwendung von TFS2013 (Git) – Philippe

0

Sie können möglicherweise zu svn git exportieren und CS Converter verwenden, um von svn zu TFVS zu wechseln. Hinweis - CS Converter wurde eingestellt, aber es sieht so aus, als ob Sie es noch herunterladen können.

2

Richten Sie eine SVNBridge auf TFS ein und verwenden Sie dann den Git-Svn-Klon.

+2

Es ist Git Svn Update, aber Sie haben Recht. Ich habe genau diese Sache gemacht. –

+0

Ich sehe keinen Befehl 'git svn update' in der [Git docs] (http://git-scm.com/docs/git-svn) mehr, obwohl ich' git svn dcommit' gefunden habe, was " Commit [s] jedes Diff vom aktuellen Zweig direkt zum SVN-Repository und dann Rebase [s] oder Reset [s] (abhängig davon, ob es einen Unterschied zwischen SVN und Kopf gibt.) Dies wird eine Revision in SVN erstellen für jedes Commit in Git. " Also wenn das das gleiche sein sollte? –

5

habe ich eine schnelle Batch-Datei, aber Sie müssen Team Foundation Power Tools (tfpt.exe) in Ihrem Pfad haben, und für (einen Befehl Befehlszeile Loop)

Visual Studio Befehlszeile zu Ihren gewünschten git Ordnern und führe folgendes aus.

git log --pretty="'%%H',%%ci - %%s" --reverse > commits 

tf workspace temp /new /s:http://{TfsInstance} /i 
tf workfold /map %2 . /workspace:temp 

FOR /F "tokens=1* delims=','" %%a IN (commits) DO git checkout %%a && tfpt online /recursive /exclude:.git*,commits,*.obj,*.exe,_ReSharper*,obj,debug,*.user,*.suo,Bin /adds /deletes /i && tf checkin /author:"{AuthorName}" /comment:"%%b" /i 

tf workspace temp /delete /i 
  1. Zuerst erstellt es eine Commits Datei mit allen Informationen, begehen in umgekehrter Reihenfolge (frühestes zuerst).
  2. Dann erstellt es ein Team Foundation-Arbeitsbereich ... (unbedingt {TtsInstance} mit Ihrem TFS URI ersetzen.
  3. Dann ist es im Arbeitsbereich einen temporären Ordner erstellt.
  4. dann schleift sie durch jede Zeile in der Commits Datei , verwendet ein Checkout von git, benutzt TFPT, um die aktuellen Dateien einzusehen (wieder sicher durch Ihren Autorennamen zu ersetzen) Der Kommentar enthält den Zeitstempel von git (leider können Sie die Eincheckzeit nicht ändern, ohne die Zeit des TFS-Servers zu ändern und ich würde das nur empfehlen) und den Namen des ursprünglichen Autors.

T er hat gut funktioniert, aber die Zweige werden nicht belassen. Ich habe mir nicht die Zeit genommen, Verzweigungen zu finden, da dies für die damalige Arbeit nicht groß genug war.

Hoffentlich kann dies jemand Zeit sparen!

+0

Ich habe 'Thumbs.db' zur ** tfpt ** Ausschlussliste hinzugefügt. Ich hatte es aus dem git-Verlauf gelöscht, weil es versehentlich hinzugefügt wurde, bevor ich eine Datei _.gitigore_ enthielt, und Fehler erhalten, wenn ich die '.bat'-Datei ausführte. –

-1

Dies ist eine alte Frage, und vielleicht sucht niemand mehr danach, aber es ist jetzt viel einfacher.

  1. ein Team-Projekt in TFS mit Git erstellen als Quellcodeverwaltung

  2. greifen die Git-URL für das Projekt. Es sieht ungefähr so ​​aus ... https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

  3. In den Befehl hineinfallen lassen und ausführen.

    git remote Herkunft https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    git push hinzufügen -u Herkunft --alle

Sollten alle müssen Sie sein.

+0

Nicht wirklich hilfreich, da Sie bei Verwendung von TFS-gehostetem GIT nicht alle Steuerelemente erhalten, die Ihnen zur Verfügung stehen würden ein vollständiges TFS-verwaltetes Projekt. –

Verwandte Themen