Woojin Kim's avatar
Woojin Kim

@[email protected]

정말... 로컬에서 마이크로커밋 하라면서 정작 스쿼시로 날려버릴 때 “왜??????????” 라고 생각한 적이 있다.

https://hackers.pub/@bgl/0195bda7-f18d-72eb-8933-81e819715410

bgl gwyng's avatar
bgl gwyng

@[email protected]

그동안(10+년;;) git이 엄청 잘만든 물건 같지는 않다고 생각하며 대충 쓰고있었는데, 요즘 branch 개념 자체가 근본적인 실수란 생각이 들기 시작했다. branch 대신에 변경의 시작과 끝, 양 끝점을 가지는 interval을 쓰는게 맞는거 같다(카테고리 이론의 작은 교훈: primitive는 양 끝점을 가지는게 좋다).

git을 쓰면 히스토리 길어진다고 squash merge 등을 하는데, (나도 하지만) 사실 기껏 만들어놓은 히스토리를 뭉개버리는 말도 안되는 동작이다. 만약 interval을 쓴다면 히스토리는 그대로 남기고 UI 단에서 fold/unfold 등을 해줄수 있을 것이다.

Darcs 등이 interval에 기초하는데, 지금은 일이 너무 바빠서 시도할 여유가 없다. 한번 숨고를 시간이 주어지면 멀쩡한 VCS를 탐색하는 시간을 가질것이다.

염산하

@[email protected] · Reply to Woojin Kim's post

@me 흠... 스쿼시로 날려버리거나 하는 일은 저도 하지는 않지만... 아무튼, svn이야 커밋은 diff라는 식의 과거 상식 기반이긴 한데 git은 아예 커밋은 diff가 아니라 특정 시점의 전체 스냅샷이라는 개념으로 되어 있다보니... 흠... 인터벌 개념은 다시 과거의 diff 개념을 이야기하는 것일지 여러모로 복잡하네요? ㅎㅎ