테스트가 성공하면 커밋, 실패하면 마지막 성공상태로 돌아가는 방법이다.
자세한 방법은 아래.
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// }
undo 를 봉인하는 것이 좋다. 테스트가 실패하고 코드가 지워지면 다시 치기 귀찮아서 돌아가고 싶다. 만약 과도하게 설계하는 성향을 교정하기 위해 TCR 의 도움을 받고 있다면, 다시 돌아가는 것은 좋지 않다. 접근법이나 분량 자체를 먼저 생각해보고 설계 부터 차분하게 다시 해보는것이 좋다.
좋은 글 감사합니다.