2017-10-22 10 views
0

私はconventional commits標準に準拠しています。スカッシュを実行してをマージするシェル関数を作成し、解析されたメッセージで変更をコミットして、コーディングのスピードとコミットの一貫性を改善します。シェル関数内の引数を解析し、それを使って複数行コミットを行うにはどうすればよいですか?

問題はです。引数を解析し、その結果をコミットメッセージに使用します。

  • 私の実際のコード:

    function git_merge_squash() { 
        git merge --squash "$1" 
        shift 
        msg= echo $'\n'"$*" | tr . \\n | tr - ' ' 
        # echo $msg 
        git commit -m $msg 
    } 
    
    alias gmrs=git_merge_squash 
    
  • 使用例:

    $ gmrs f/my_branch Features.- Signup.-- Save hashed password 
    asynchronously.-- Retrieve token.- Login.-- Retrieve token.- 
    Logout.-- Destroy token 
    
  • 期待される結果:

    git merge --squash f/my_branch 
    git commit -m " 
    Features 
        Signup 
        Save hashed password asynchronously 
        Retrieve token 
        Login 
        Retrieve token 
        Logout 
        Destroy token" 
    

あなたが推測できるように、私の実際のコードでは、私のコメントechoは、私が欲しいメッセージを正確に表示します。しかしgit commit -mコマンドは$msgを文字列として受け取ります。 -Fフラグを使ってファイル入力をシミュレートするなど、複数のオプションを試しましたが、うまくいかなかったのです。

どのように目標を達成できますか?前もって感謝します。私はそれを働い

+0

コミットメッセージに複数行の場合は、\ nも追加する必要があると思います。 –

+0

'git commit -m" msg msg "(msg varを囲む引用符で囲みます)? – zigarn

+0

これらのソリューションは機能しませんでしたが、とにかくありがとうございます。 –

答えて

0

ソリューション

。私は誰かがこれを助けてくれることを願っている。

  • の作業コード

    function git_merge_squash() { 
        git merge --squash "$1" 
        shift 
        git commit -m "$(echo $'\n'"$*" | tr . \\n | tr - ' ')" 
    } 
    alias gmrs=git_merge_squash 
    
0

あなたは改行のために、独自のエンコーディングを発明する必要はありません。あなたが望むようにフォーマットされた2番目の引数を使用してください。

git_merge_squash() { 
    git merge --squash "$1" 
    git commit -m "$2" 
} 

gmrs f/my_branch "\ 
Features 
    Signup 
    Save hashed password asynchronously 
    Retrieve token 
    Login 
    Retrieve token 
    Logout 
    Destroy token" 
+0

これを使用しない主な理由は、間違いを起こしやすいことと、 "書くのが速くない(少なくとも私のスペイン語キーボードでは2つのキーが必要です)、" .- "と入力することがありがとうございました –

+0

二重引用符と複数の改行があります。 – chepner

関連する問題