2016-10-05 5 views
1

C-APIを使ってGit内の2つのタグの間にあるすべてのコミットを見つける方法を知りましたか?私は、これは簡単にCLIツールで行うことができます知っている:.. [最初のコミット]libgit2:2つのタグ間のすべてのコミットを見つけるか?

gitのログ[二コミット] --pretty =

しかしとしてoneline、私は何をする方法を見つけ出すように見えることはできませんそれはC APIを使っています。私が抱えている問題は、グラフに1つのサイクルが終わるときです。

私はObjective-Gitで使用していたObjective-Cコードをいくつか紹介しますが、Objective-Cはほとんどの人がObjective-Cを知らないので、C APIや他のGit APIの答えがうれしいです。私は以前に横断されたコミットか何かの辞書を保持しなければならないと思いますか?

- (void)traverseCommits: (GTCommit *)start withGoal: (GTCommit *)goal withHistory: (NSMutableDictionary *)history{ 
    NSLog(@"%@", start.shortSHA); 
    if ([start.SHA isEqualToString:goal.SHA]) { 
     return; 
    } 
    for (GTCommit *c in start.parents) { 
     //[history setObject:c forKey:c.SHA]; 
     if(![c.SHA isEqualToString:goal.SHA]) 
      [self traverseCommits:c withGoal:goal withHistory:history]; 

    } 
} 

答えて

2

revwalkの機能は、この種の使用例のために設計されています。新しいタグをgit_revwalk_push_refでプッシュし、古いタグをgit_revwalk_hide_refで非表示にします。その後、git_revwalk_nextで範囲を歩いてください。

+0

偉大な、完璧に動作します! – jaredjones

関連する問題