2017-07-19 6 views
0

特定のgitリポジトリのコンテンツを使用するコンソールアプリケーションがあります。C#とGitを使ってタグをチェックアウトするには?

  • 別の場所

問題に編成コンテンツを移動

  • は、特定の方法でそれを整理Gitのリポジトリからコンテンツをプル2番目の項目である:これは、以下を行い。コンテンツは、指定されたGitタグに基づいて整理され処理される必要があります。現在のところ、C#コンソールアプリはリポジトリをクローンすることができますが、リポジトリ内のすべてのタグを1つずつチェックアウトする必要があります。各タグをチェックした後、コンソールアプリケーションはファイルを処理し、次のタグに移動する必要があります。

    私のC#コンソールアプリケーションでタグをチェックアウトするにはどうすればよいですか?私はちょうど同じようなネイティブのGitコマンドを使用したいと思いますgit checkout tags/<tagname>

  • +0

    私は、Libgit2sharpを使用する方がはるかに簡単だとわかりました。https://github.com/libgit2/libgit2sharp – Philippe

    答えて

    1

    これを行うには、実際にはかなり簡単です。私は新しいプロセスを使い、StandardOutputから読み込むというように、一般的なGitコマンドメソッドを作成しました。私はその後、すべてのStandardOutputを後で繰り返し処理できるカンマ区切りの文字列として返しました。

    public string RunGitCommand(string command, string args, string workingDirectory) 
    { 
        string git = "git"; 
        var results = ""; 
        var proc = new Process 
        { 
         StartInfo = new ProcessStartInfo 
         { 
          FileName = git, 
          Arguments = $"{command} {args}", 
          UseShellExecute = false, 
          RedirectStandardOutput = true, 
          CreateNoWindow = true, 
          WorkingDirectory = workingDirectory, 
         } 
        }; 
         proc.Start(); 
         while (!proc.StandardOutput.EndOfStream) 
         { 
          results += $"{proc.StandardOutput.ReadLine()},"; 
         } 
         proc.WaitForExit(); 
         return results;  
    } 
    

    これは私がそのように

    最後に
    var tags = RunGitCommand("tag", "", $"{location}"); // get all tags 
    

    のようなタグを呼び出すことが許可され、私は、すべてのタグを反復処理し、私は上記に書いたRunGitCommand方法でそれらをチェックアウトすることができます。各反復タグについて、私はtagがタグのリストの個々の要素であるような何かをすることができます。

    git.RunGitCommand("checkout", $"tags/{tag}", $"{location}"); 
    
    関連する問題