오늘 술마시면서 소스코드 Commit 정책에 관한 얘기가 나와서. 이런 저런 얘기를 했는데...


일단 메인 이슈는 - 단위별 개발완료 후 빌드만 되면 Commit VS Unit Test 완료 후 Commit.


난 단위별 개발완료 후 빌드만 되면 commit을 선호하는데.. 별로 누가 옳다라고 주장하고 싶지는 않다. 


누가 옳은지는 상황에 따라 다르니깐. 


사실 난 소스코드 Commit에 대한 것은 개발자 간의 약속이라 생각해 이래도 그만 저래도 그만이라 생각하고 맞춰가는 것이 맞다고 생각한다.


하지만 지내오면서 느낀 경험에 의해서는 간단하게라도 기본적인 Commit Rule을 정하고 가는 것이 좋은 것 같다.


하여튼 그래서 개인적으로 Commit에 대한 나의 의견을 적어보고 정리를 해보려 한다. 술마셔서 잘 될까 모르겠는데. 


이런 내용은 생각날 때 아니면 잘 적기가. ㅎㅎㅎ 귀차니즘...


나는 소규모 프로젝트일 때는 작성 중인 코드는 에러없이 컴파일이 완료되면 소스코드 저장소에 테스트를 거치지 않고 바로Commit 한다. 


이런 방식에는 다음과 같은 이유가 있다.


1. 단위 테스트를 완료한 후에 Commit을 하게 되면 그 동안 발생하는 수정사항에 대한 내용을 기록하는 기회를 놓치게 된다.

2. 최소한 하루에 한번정도는 Commit을 해서 개발 진행사항을 기록하는 것이 Code Traceability를 높일 수 있다.

3. 잦은 커밋은 개발자가 개발 단위 분량을 세분화 하고 진척도를 추적하고 이해할 수 있도록 해준다. 물론 팀원간 진척도 공유의 의미도 포함된다.

4. 대형프로젝트일 경우에 유용한 부분인데. 팀원 간에 자주 Commit을 함으로 인해서 커밋간의 충돌을 사전에 확인 하고 조율 할 수 있는 부분이 있다. 간단히 얘기해서 팀원간의 개발 동기화율을 높여주고 사전 충돌을 예방한다 !.


그 외에도 이유는 꽤 많을 것 같은데......


자주 커밋하는 것을 선호한다고 해서 의미없는 Commit도 막 하자는 얘기를 하는 것은 아니다

되도록이면 Task 단위로. 완료된 항목별로 Commit을 하는 것을 선호 한다는 얘기다.


잦은 커밋을 싫어 하는 사람들도 꽤 많은데.  일단 Conflict가 나는 걸 싫어 하는 경우도 있고....(Conflict는 빨리 나느게 좋은 것 같다 .4 번이유 처럼 시간이 길어질 수록 충돌시 해야 할 일은 더 커지기 때문에..)


Unit Test 후 Commit에 대한 내 생각은 아래와 같다.

1. 일단 위에 언급한 것 처럼 수정사항을 기록하는 상황을 많이 놓치게 된다. 뭐 Git 인 경우 Local에 기록하고 있다면 할말 없음 요~.

2. Unit Test를 그렇게 자주하는게 옳은 방법이야? 에 대한 의문이 있다. 

 의미 있는 시점 Integration이 필요한 상황 전에 [시스템 V&V , 컴포넌트 별로 Unit Test + Code Review ]후에 Baseline으로 잡음으로 Code의 정리를 꽤 하는게 옳다고 생각한다.(논란의 여지가 있음을 알고 있음요)


3. 그 이유는 Commit 전 Unit Test라는 것 자체를 Burden으로 여겨 Commit을 꺼리게 된다. 그리고 버그 발생 수준과 Cost에 대해 비교했을 때 잦은 Unit Test효율성 측면에서 경쟁력이 있는지 의문이 든다. 

완벽히 분리된 컴포넌트를 만들어 Unit Test를 하는 이상적인 상황이 현실에 자주 있을지에 대한 의심과. 요구사항 변경 타 컴포넌트와의 인터페이스로 인해 Code는 계속해서 진화하고 Unit Test를 변경 될때 마다 다시하는것이 참.. 난 좀 비효율적이라 생각함.


4. 하지만 Testing 없이 막흘러가자는 얘기는 아니다. 위에 언급한 내용처럼 적절한 시점에서 Baseline을 잡음으로서 Code를 정리하는 형태를 가져가는 것이 좋겠다.


하여튼 위 얘기들은 개인적인 견해일 뿐 정답은 아님을 밝히며 여기서 마무리 해볼까 한다. 


요즘 인생에 대해 고민을 많이 하게 된다.....매사에 확실히 따지고 넘어가던 정열에 불타던 젊음이 없어졌음을 의미하는 건지. 내 주장보다는 남의 의견을 존중하는 사람이 되었다는 건지... 


소스코드 커밋에 대한 문제도 사소해 보이지만 확실히 해볼 필요가 있다.


어찌되었건 다시한번 내 행동과 인생을 돌아 보는 계기가 되었다. 인간사 쉽지가 않다. 


저작자 표시 비영리 변경 금지
신고


티스토리 툴바