web-dev-qa-db-fra.com

Comment puis-je pousser mon référentiel Git existant vers Team Foundation Service

Microsoft prend désormais en charge les référentiels Git sur leur Team Foundation Service. J'ai un compte sur Team Foundation Service, et j'aimerais pousser mon référentiel Git existant vers un projet là-bas.

Chaque fois que j'essaie de faire des recherches, je continue de trouver des choses comme TFS-GIT ou GIT-TF. Je suis sûr que je ne veux pas ceux-ci, car je pense que ceux-ci changent pour le modèle Team Foundation Server pour les référentiels de code, et ce n'est pas ce que je veux.

Plus précisément, j'ai un référentiel Git existant que je veux pousser vers TFService.

40
McKay

D'accord, j'étais apparemment trop compliqué. Voici ce que j'ai fait.

  1. A créé un nouveau projet dans TFService
  2. Connecté à ce projet dans Visual Studio
  3. Cloné ce projet dans Visual Studio
  4. git pull c:\source\oldGitProject

Ça y était, il a retiré toutes les modifications de l'ancien emplacement, et j'ai pu pousser cela jusqu'à TFService facilement.

31
McKay

"comment puis-je pousser mon référentiel git existant vers TFService?"

Une fois que vous avez déclaré un dépôt git sur tfs.visualstudio.com (voir ci-dessous), ajoutez cette URL de dépôt git aux télécommandes de votre propre dépôt local:

cd /path/to/local/repo
git remote add tfs url://tfs/git/repo
git Push --mirror tfs

Cela suffira pour repousser l'historique complet de votre référentiel local vers ce nouveau référentiel en amont sur TFS.

Encore une fois, l'idée est de créer un nouveau référentiel vide sur le côté amont (TFS) et d'y pousser votre référentiel local.


(Réponse originale)

Si je comprends bien article de blog de Scott Hanselman à ce sujet :

Ce support Git nécessitera VS2012.2 (actuellement en préversion), vous devrez donc l'installer d'abord, puis obtenir le VSIX. Vous pourrez mettre à jour les deux à la sortie de VS2012.2, et le Git VSIX continuera de se mettre à jour automatiquement via VS Gallery.

Il s'agit d'un fournisseur de code source complet pour VS, vous pouvez donc l'utiliser pour faire presque tout sans quitter VS, ou vous pouvez passer du temps sur la ligne de commande et l'utiliser pour un rappel visuel de l'état de votre référentiel.

Pour les équipes, vous pouvez aller jusqu'à http://tfs.visualstudio.com et créer un compte et obtenir 5 utilisateurs gratuitement. Vous pouvez choisir Git ou Team Foundation Version Control (TFVC) comme fournisseur source et utiliser tous les modèles Team Foundation agile, scrum ou autres pour vos outils ALM

Le processus d'enregistrement pour un projet Git est illustré ici , soulignant à nouveau que vous avez besoin du "aperçu technologique communautaire" du Git VSIX en plus d'un " aperçu de la technologie communautaire "de VS 2012 Update 2 (VS2012.2) .

Git project in TFS

21
VonC

Quelques bonnes réponses ci-dessus, mais j'ai trouvé cela encore plus facile.

  • Créez le référentiel Git local. (Ou dans mon cas, j'ai converti mon référentiel SVN en Git.)
  • Accédez à visualstudio.com et créez le nouveau projet, en spécifiant Git comme contrôle de source.
  • Cliquez sur l'option de menu "Code" dans le nouveau projet dans VisualStudio.com.
  • L'écran affichera la commande Git exacte pour pousser un référentiel existant, y compris l'URL de votre référentiel unique. Tout ce que vous avez à faire est de copier et coller cette commande dans votre invite de commande Git.

    git clone <repository url>

9
Rick Arthur

Tout ce que nous devons faire est de changer l'URL cible du serveur de la solution/repo locale existante.

Donc:

  1. Dans le cloud (TFService), créez un nouveau projet et obtenez son URL.
  2. Sur votre machine locale, ouvrez la solution/le référentiel existant dans Visual Studio et dans la console de gestion des packages (PMC), exécutez la commande suivante

    git remote set-url Origin https://new.url.here

  3. Utilisation de View> Team Explorer> Unsynched Commits Poussez la solution/le référentiel existant vers le nouveau projet.

Cela repoussera le référentiel local, y compris tous les validations précédentes, vers le nouveau projet TFS dans le cloud.

Git ligne de commande FTW.

Tout cela consiste à mettre à jour l'attribut [url Origin] dans le fichier de configuration trouvé dans le dossier .git, vous pouvez donc simplement utiliser le bloc-notes si vous souhaitez ouvrir et modifier ce fichier. À mon humble avis, cette commande est plus propre, car vous ne courez pas le risque de modifier accidentellement un autre paramètre ni de quitter VS.

Remarque: Si l'option de pousser à l'étape: 3 est désactivée, vous devrez peut-être effectuer un autre commit local afin de "salir" la tête de votre arborescence source et ainsi activer la commande Push. Tho Je suis sûr qu'il y aurait une autre commande git pour le faire également.

5
rism

Ran dans ce problème aujourd'hui. Réponse de VonC, en ajoutant TFS comme télécommande et en utilisant git Push --mirror tfs, a travaillé pour moi. Cependant, il pourrait être utile de mentionner quelques éléments supplémentaires à ce sujet.

  1. Après le Push, Visual Studio ne parvient toujours pas à identifier que ce dépôt local est connecté au Team Foundation Service de quelque manière que ce soit. Donc, vous devrez toujours sélectionner "Se connecter au projet d'équipe ..." et faire un "clone" en utilisant l'interface. Le dépôt de TFS sera cloné, avec tout à pousser. Après cela, vous serez connecté à TFS et devriez pouvoir travailler normalement dans le clone.

  2. L'utilisation de '--mirror' poussera toutes les références locales, y compris potentiellement certaines branches locales que vous ne voulez pas vraiment avoir dans le référentiel central. Si tel est le cas, après avoir appuyé sur '--mirror', vous devez utiliser git Push tfs :<branchname> pour supprimer une branche de TFS afin d'éviter que d'autres personnes ne tirent plus tard vos branches locales.

  3. Alternativement, au lieu de '--mirror', il devrait être possible de simplement pousser les références souhaitées dans le dépôt TFS, comme vous le feriez pour tout autre dépôt git: git Push tfs <refspec>. Étant donné que le dépôt TFS est toujours vide à ce stade, un groupe de noms de branches l'un après l'autre devrait suffire comme <refspec>. Si vous utilisez cette méthode, vous pouvez également utiliser use git Push -u, ce qui fera également des branches que vous pousserez dans les branches vides de repo tracking.

EDIT: Comme mentionné dans le commentaire d'Edward Thomson, le clonage à partir de TFS ne devrait pas être nécessaire si votre dépôt d'origine est configuré pour suivre une branche à partir de la télécommande TFS. Donc git Push -u <refspec> devrait à la fois pousser le référentiel vers le référentiel TFS vide et permettre également au IDE de reconnaître le référentiel local d'origine car il configure le suivi.

1
avivr

L'un des blogs que j'ai trouvé ce matin a lié ce document:

http://blogs.msdn.com/b/visualstudioalm/archive/2013/02/06/set-up-connect-and-publish-using-visual-studio-with-git.aspx#publish- tfs

Ils semblent avoir une commande interne appelée publier (qui pourrait utiliser la commande --mirror mentionnée par @VonC?)

Je ne sais pas si cela fonctionne encore non plus.

1
McKay