如何通过自定义Perl脚本处理合并冲突

时间:2017-07-27 09:42:32

标签: git perl

我正在编写一个自定义Perl脚本,它应该能够以编程方式处理合并冲突,并且在执行git rebase命令时GIT用户的交互最少。目前我能够检测到GIT是否转到{{ 1}}状态,我在while循环中执行我的命令列表。但问题是我无法检测到GIT何时离开REBASE状态。

自定义Perl脚本

REBASE

我的要求是,如果没有合并冲突,我该如何终止循环,或者如果还有其他更好的方法,请告诉我。

2 个答案:

答案 0 :(得分:1)

system返回命令的退出状态,而不是其输出。检查perlop中的`qx,了解存储外部命令输出的方法。

答案 1 :(得分:0)

终于能够做到了。如果有更好的方法可以让我知道。

my $ifRebaseState=`ls \`git rev-parse --git-dir\` | grep rebase || echo no rebase`;
    chomp $ifRebaseState;
    while( $ifRebaseState eq "rebase-apply"){
        $ifRebaseState=`ls \`git rev-parse --git-dir\` | grep rebase || echo no rebase`;
        chomp $ifRebaseState;
        my $ifMergeNeed=`git mergetool`;
        chomp $ifMergeNeed;
        if($ifMergeNeed ne "No files need merging"){
          system("git rebase --continue"); 
        }else{
          last;
        }

    }