2014-10-02 2 views
4

추적 된 파일에서 변경 사항을 감지하면 C# 코드가 git 명령을 실행할 수 있습니까? 이 목적을 위해 VisualStudio/C# 콘솔 프로젝트를 작성 중입니다.C# 함수에서 git 명령 실행

저는 .NET 환경에 익숙하지 않고 현재 자동화 된 GIT 커밋을 폴더에 통합하는 작업을하고 있습니다. 자동으로 변경/추가/삭제 알려진 폴더에 커밋하고 자식 원격에 밀어 넣을 필요가있다. 어떤 조언도 감사하겠습니다. 고맙습니다. 처음에 (완료) 적절한 무시 파일과 폴더를 설정

  1. Git 저장소 : 여기

    내가 가진 마지막 하나는 내가 몇 가지 지침을 필요로하는 일입니다 것입니다.
  2. 나는 C# FileSystemWatcher를 사용하여 해당 폴더의 모든 변경 사항을 잡았습니다 (완료).
  3. 프로젝트가 변경을 감지하면 변경 사항을 커밋하고 푸시해야합니다 (보류 중).

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

    참고 : (사용자 상호 작용)이 코드는 내가 충돌에 대한하지 걱정이 믿을 수 있도록이의 repo에 짓는 유일한 기업이 될 것입니다

임시 명령이 프로젝트는 실행해야 흐름이 작동합니다.

답변

4

, 당신은 파일 변경을

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

하지 최적의 솔루션을 감지 할 때 Process.Start를하여 외부 자식 명령을 호출 할 수 있지만 C#

+0

Process 클래스와이 샘플을 사용하여 사용 사례에 잘 맞는 솔루션을 찾았습니다. 고맙습니다. – Yuri

-1

패키지 관리자 콘솔은 Powershell 콘솔입니다. 그래서 거기에서 자식 명령을 실행할 수 있습니다.

+0

감사에서 작동 Voam. .NET에 익숙하지 않기 때문에 명확하게 설명합니다. 명령이 하드 코드되어 있어야 파일이 변경 될 때 자동으로 실행해야합니다. 내 코드는 패키지 관리자 콘솔을 사용하여 필요에 따라 명령을 런타임에 실행할 수 있습니다. – Yuri

+0

파일 변경시 Visual Studio 자체에서 git에 저장 프로세스가 시작된다는 요구 사항을 알지 못했습니다. – voam

+0

이 작업을 수행하는 방법에 대해 다른 생각이 있으면 알려주십시오. – Yuri

2

한 가지 대안은 프로젝트로 Grunt 및 TaskRunner를 설정하는 것입니다.

Grunt은 프로젝트의 폴더 (또는 폴더)에 대한 변경 사항을 자동으로 감지하고 해당 git 명령을 실행하여 커밋 할 수 있어야합니다.

Task Runner을 사용하면 Visual Studio에서 초록을 초기화하고 실행할 수 있습니다.

Visual Studio 팀에서는 Task Runner가 Visual Studio의 향후 릴리스에 통합 될 예정이므로 장기적인 솔루션이 될 수 있습니다.

참고 : 주석에 언급되어 있지만 파일을 저장소에 저장할 때마다 자동 커미팅을하는 것이 좋습니다. 간단한 텍스트 변경이 아닌 기능/원자 코드 변경이 필요합니다. 자신의 책임하에 자동 커밋하십시오. 당신은 C#으로 그것을하려면