Test && Commit || Revert

Jin·2023년 8월 17일

테스트가 성공하면 커밋, 실패하면 마지막 성공상태로 돌아가는 방법이다.

자세한 방법은 아래.

https://www.youtube.com/watch?v=FFzHOyFeovE

Racket 언어에 적용해 보았다.
.zhsrc

# Test && Commit || Revert
## Racket
racket-tcr() {
  fswatch "$1" | while read event
    do
      clear
      raco test $1 && git commit -am working || git reset --hard
    done
}

이렇게 해두면

racket-tcr {filepath} 와 같은 형태로 간편하게 사용 가능하다.

이렇게 작업을 끝내면 "working" 이라는 커밋이 잔뜩 쌓이게 된다. 리베이스 하기 위해서 커밋 개수를 알면 좋다.

git log --grep="working" | grep "working" | wc -l

알아낸 커밋 개수를 통해서 rebase.

count=$(git log --grep="working" | grep "working" | wc -l)
git rebase -i HEAD~${count// }

TCR 팁

undo 를 봉인하는 것이 좋다. 테스트가 실패하고 코드가 지워지면 다시 치기 귀찮아서 돌아가고 싶다. 만약 과도하게 설계하는 성향을 교정하기 위해 TCR 의 도움을 받고 있다면, 다시 돌아가는 것은 좋지 않다. 접근법이나 분량 자체를 먼저 생각해보고 설계 부터 차분하게 다시 해보는것이 좋다.

2개의 댓글

comment-user-thumbnail
2023년 8월 17일

좋은 글 감사합니다.

1개의 답글