从C#函数运行git命令
问题描述:
我的C#代码在检测到跟踪文件中的更改时如何运行git命令?我正在为此编写一个VisualStudio/C#控制台项目。从C#函数运行git命令
我是新来的.NET环境,目前正致力于将自动GIT提交集成到一个文件夹。我需要自动提交任何更改/添加/删除已知文件夹,并将其推送到git远程。任何指导赞赏。谢谢。
这里是我最后一个是一个,我需要一些指导:
- Git仓库初步建立起上的文件夹适当忽略文件(完成)。
- 我正在使用C#FileSystemWatcher捕获对所述文件夹(完成)的任何更改。
- 一旦我的项目检测到更改,它需要提交并推送这些更改(待定)。
暂定命令该项目需要运行:
git add -A
git commit "explanations_of_changes"
git push our_remote
注:此代码(没有用户交互)将致力于这个回购协议,所以我并不担心冲突,并相信这一点的唯一实体流量将起作用。
答
如果你想要做它在C#中,你可以调用的Process.Start外部git的命令时,你发现文件变化
string gitCommand = "git";
string gitAddArgument = @"add -A" ;
string gitCommitArgument = @"commit ""explanations_of_changes"" "
string gitPushArgument = @"push our_remote"
Process.Start(gitCommand, gitAddArgument);
Process.Start(gitCommand, gitCommitArgument);
Process.Start(gitCommand, gitPushArgument);
不是最好的解决方案,但它工作在C#
答
另一种方法是将Grunt和TaskRunner设置为您的项目。
Grunt应该能够自动检测项目中文件夹(或多个文件夹)的变化,并执行相应的git命令来提交它。
Task Runner允许您在Visual Studio中初始化并运行Grunt。
Visual Studio团队已经表示Task Runner将被集成到Visual Studio的未来版本中,因此这可能是一个长期解决方案。
注意:它已在注释中提及,但我觉得值得一提的是,随时将文件保存到存储库时自动提交并不是最佳实践。您希望功能/原子码更改被推入,而不是简单的文本更改。自动提交需要您自担风险。
我使用Process类和此示例来查找适用于我的用例的解决方案。谢谢。 – Yuri 2014-10-03 23:23:19