2014-10-02 107 views
4

我的C#代码在检测到跟踪文件中的更改时如何运行git命令?我正在为此编写一个VisualStudio/C#控制台项目。从C#函数运行git命令

我是新来的.NET环境,目前正致力于将自动GIT提交集成到一个文件夹。我需要自动提交任何更改/添加/删除已知文件夹,并将其推送到git远程。任何指导赞赏。谢谢。

这里是我最后一个是一个,我需要一些指导:

  1. Git仓库初步建立起上的文件夹适当忽略文件(完成)。
  2. 我正在使用C#FileSystemWatcher捕获对所述文件夹(完成)的任何更改。
  3. 一旦我的项目检测到更改,它需要提交并推送这些更改(待定)。

暂定命令该项目需要运行:

git add -A 
git commit "explanations_of_changes" 
git push our_remote 

注:此代码(没有用户交互)将致力于这个回购协议,所以我并不担心冲突,并相信这一点的唯一实体流量将起作用。

回答

4

如果你想要做它在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#

+0

我使用Process类和此示例来查找适用于我的用例的解决方案。谢谢。 – Yuri 2014-10-03 23:23:19

-1

软件包管理器控制台是Powershell控制台。所以你可以从那里运行你的git命令。

+0

谢谢Voam。我是.NET新手,只是为了澄清。我需要对这些命令进行硬编码,以便在文件发生更改时自动运行这些命令。您是在说我的代码可以使用程序包管理器控制台以便根据需要运行这些命令运行时? – Yuri 2014-10-02 21:25:09

+0

我没有看到保存到git的过程将由Visual Studio本身在文件更改时启动的要求。 – voam 2014-10-02 21:54:33

+0

让我知道如果你有任何其他的想法如何做到这一点。 – Yuri 2014-10-02 22:45:37

2

另一种方法是将Grunt和TaskRunner设置为您的项目。

Grunt应该能够自动检测项目中文件夹(或多个文件夹)的变化,并执行相应的git命令来提交它。

Task Runner允许您在Visual Studio中初始化并运行Grunt。

Visual Studio团队已经表示Task Runner将被集成到Visual Studio的未来版本中,因此这可能是一个长期解决方案。

注意:它已在注释中提及,但我觉得值得一提的是,随时将文件保存到存储库时自动提交并不是最佳实践。您希望功能/原子码更改被推入,而不是简单的文本更改。自动提交需要您自担风险。