Search code examples
c#gitvisual-studio-2013version-controlwindows-7

Run git commands from a C# function


How can my C# code run git commands when it detects changes in tracked file? I am writing a VisualStudio/C# console project for this purpose.

I am new to the the .NET environment and currently working on integrating automated GIT commits to a folder. I need to automatically commit any change/add/delete on a known folder and push that to a git remote. Any guidance appreciated. Thank you.

Here is what I have and the last one is the one I need some guidance with:

  1. Git repository initially set up on folder with proper ignore file (done).
  2. I am using C# FileSystemWatcher to catch any changes on said folder (done).
  3. Once my project detects a change it needs to commit and push those changes (pending).

Tentative commands the project needs to run:

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

NOTE: This code (with no user interaction) will be the only entity committing to this repo so I am not worried about conflicts and believe this flow will work.


Solution

  • If you want to do it in C#, you can call the external git command by Process.Start when you detect file change

    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);
    

    Not the best solution but it works in C#