2017-09-22 13 views
0

Gitにコミットしないようにしたいデバッグコードがあります。デバッグコードが存在するときにgit commitを禁止する方法

のような何か:

void myImportantFunction() { 
    while (true) { 
     //MyCode 
#ifndef NDEBUG 
     //TODO remove before commit 
     std::this_thread::sleep_for (std::chrono::seconds(1)); 
#endif 
    } 
} 

IFNDEF NDEBUGが、この生産に誤ってそれを作るから私を保護しますが、私はまだ本当にゆっくりとデバッグバージョンの実行を行うことによって、私の同僚を混乱させるだろう。

コミット時にこのコードを受け入れないようにGITを設定する方法はありますか?私はTODOでそれをしないほうがいいでしょう。他のインスタンスがあるかもしれないからですが、私は別のタグを追加することができればそれは可能です。ここで

+0

代替案:ステージングの変更時に 'git add -up'を使用して、手動で各変更を承認できるようにします。 NDEBUGの代わりに – cdhowie

+4

には、メークファイルまたはプロジェクト設定で定義または定義解除できるPAULB_DEBUG_CODE定義を使用し、このファイルを個人のgitignoreに追加します。つまり、コードがコミットされていても、定義されていないため、他のプログラマーには決して影響しません。そして、そのようなコードはすべてあなたの専用名であるため、簡単に見つけることができます –

+4

は 'grep'を含むクライアントフックの仕事のように見えますか? https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks –

答えて

2

は、私が使用して事前にコミットフックです:

それはすべてのファイルが特殊な単語のためにコミットするために段階的なスキャン:dontcommit。このワードがどこかに存在する場合、コミットコマンドは失敗します。それは誰にでもありませんが、それは私の作品

void myImportantFunction() { 
    while (true) { 
     //MyCode 
#ifndef NDEBUG 
     // dontcommit 
     std::this_thread::sleep_for (std::chrono::seconds(1)); 
#endif 
    } 
} 

:私は私がコミットする前に削除していき、デバッグ用のコードのブロックを追加するたびに

#!/bin/bash                  

# check if 'dontcommit' tag is present in files staged for commit 
function dontcommit_tag() {              
    git grep --cached -n -i "dontcommit"           
}                    

# if 'dontcommit' tag is present, exit with error code                   
if dontcommit_tag                
then                    
    echo "*** Found 'DONTCOMMIT' flag in staged files, commit refused"   
    exit 1                  
fi 

、私は余分な// dontcommitコメントを入力します。

関連する問題