2017-10-22 2 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" 
    
,536,

짐작할 수 있듯이 실제 코드에서 내 의견을 말한 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
당신은 줄 바꿈에 대한 자신의 인코딩을 발명 할 필요가 없습니다

; 원하는 형식으로 두 번째 인수를 사용하십시오.

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

관련 문제