Exécuter des commandes git à partir d'un C# fonction
Comment mon code C# exécuter des commandes git quand il détecte les changements dans le fichier suivi? Je suis en train d'écrire un VisualStudio/C# console de projet à cet effet.
Je suis nouveau sur le de la .NET de l'environnement et travaille actuellement sur l'intégration automatisée GIT s'engage à un dossier. J'ai besoin de automatiquement commettre l'un quelconque de modifier/ajouter/supprimer un dossier et pousser à un git remote. De toute orientation apprécié. Merci.
Voici ce que j'ai et le dernier est celui que j'ai besoin de quelques conseils:
- Dépôt Git d'abord mis en place sur dossier avec une bonne ignorer des fichiers (fait).
- Je suis à l'aide de C# FileSystemWatcher pour attraper toutes les modifications sur ledit dossier (terminé).
- Une fois mon projet détecte un changement, il doit s'engager et à pousser ces changements (en cours).
Provisoire commandes de l'équipe de projet doit exécuter:
git add -A
git commit "explanations_of_changes"
git push our_remote
REMARQUE: Ce code (sans interaction de l'utilisateur) sera la seule entité s'engageant à ce repo donc je ne suis pas inquiet au sujet des conflits et de croire ce flux de travail.
OriginalL'auteur Yuri | 2014-10-02
Vous devez vous connecter pour publier un commentaire.
Si vous voulez le faire en C#, vous pouvez appeler l'externe commande git par Processus.Démarrer lorsque vous détecter des changements dans les fichiers
Pas la meilleure solution, mais il fonctionne en C#
OriginalL'auteur palazzo train
Je réalise que c'est une vieille question, mais je voulais ajouter la solution que j'ai récemment est venu à travers pour aider ceux dans le futur.
La
PowerShell
classe fournit un moyen facile d'interagir avec git. C'est une partie de laSystem.Management.Automation
espace de noms .NET.À mon avis, c'est plus propre et plus agréable que l'aide de la
Process.Start()
approche. Vous pouvez les modifier selon vos besoins spécifique en modifiant les scripts qui sont ajoutés à lapowershell
objet.Comment pourrions-nous le faire avec quelque chose comme SourceTree qui utilise ses propres git fenêtre?
Arbre Source est juste une interface visuelle pour git. Vous pouvez exécuter des commandes git sur un repo et ne pas utiliser de source de l'arbre, et ces changements seront reflétés dans l'arbre source.
Je veux dire qu'il n'utilise pas la norme git fenêtre, il utilise sa propre version ming32.exe. C'est une commande bash fenêtre. Les commandes que j'utilise tous les jours dans cette fenêtre ne sera tout simplement pas de travail en powershell. Par exemple "target_branch="dev"; git checkout $target_branch" (c'est à dire l'attribution et l'utilisation de variables exactement comme ça), ne fonctionnera pas dans powershell. Encore une fois, la question de savoir comment invoquer git à partir de c# n'est pas vraiment répondu.
Remarque: cette solution utilise le Système.De la gestion.Automatisation dont vous aurez besoin .Net Core 2.0 et jusqu'
OriginalL'auteur ivcubr
Une alternative serait d'installation de Grunt et TaskRunner avec votre projet.
Grunt devrait être en mesure de fournir l'automatisation de la détection des changements dans un dossier(ou des dossiers) dans votre projet et d'exécution appropriées commandes git à la commettre.
Task Runner permet d'initialiser et d'exécuter Grunt à partir de Visual Studio.
L'équipe Visual Studio a indiqué que la Tâche Coureur va s'intégrer dans les futures versions de Visual Studio, donc cela pourrait être une solution à long terme.
Remarque: Il a été mentionné dans les commentaires, mais je pense qu'il vaut la peine de mentionner à nouveau que l'auto-validation à chaque fois qu'un fichier est enregistré dans le référentiel n'est pas la meilleure pratique. Vous souhaitez fonctionnelle /atomique code des modifications à obtenir poussé en, pas simple modification du texte. Auto-Commit à vos propres risques.
OriginalL'auteur Dillie-O
Le Gestionnaire de paquets de la Console se console Powershell. De sorte que vous pouvez exécuter vos commandes git à partir de là.
Je ne vois pas l'exigence que le processus d'enregistrement à git serait lancé par Visual Studio lui-même lors de modifications de fichiers.
Laissez-moi savoir si vous avez d'autres idées sur la manière de les accomplir.
L'OP a expressément déclaré "Comment mon code C# exécuter des commandes git", ce n'est pas quelque chose qui peut être réalisé à l'aide de la Console du Gestionnaire de Package
OriginalL'auteur voam