✏️ 2023-02-22 Today I Learn

@mitoconcrete · February 22, 2023 · 5 min read

코드 컨플릭트 1차 해결

오늘까지가 due라서 오늘까지 프론트작업을 마무리해달라고 팀원들에게 부탁했다. 다들 자신있어하셨다. 이 땐 몰랐지.. 우리의 코드가 엉겅퀴처럼 꼬일 줄은.. ㅋㅋ 위에서 말한대로 코드를 병합하는 과정에서 많은 충돌이 발생했다. 문제는 2분의 코드가 꼬임에 따라 발생한 것인데, 1분은 PR을 날리고 4일동안 업데이트가 안된 코드였고, 1분은 파일명과 다른사람이 작업하신 파일들을 수정하신것들이 있었고, 그에 따라 코드충돌이 어마무시하게 일어났다.

원래, 프론트 작업 남은게 있어서 그거하고 일찍 잠들려고 했는데.. 심지어 밥먹으려고 아내는 기다리고 있는데.. 갑작스러운 상황에 머릿속이 캄캄해졌다.

침착하고 순서를 다시잡았다. 일단 머지된 코드 중 가장 많은 충돌이 난 코드를 리버트 시켜 걷어낸 뒤, 기존에 있던 컨플릭트를 해결하였다. 이후에, 걷어낸 코드를 PR을 날리신 분에게 컨플릭트해결을 부탁드렸다. 아무래도 수정한 분이 이유가 있으실테니, origin 에서 풀을 당겨 진행해달라고 말씀드렸다. 그리고 전략이 잘 세워지지 않거나, 막막한 경우 같이 해결해드린다고 했는데 어디가 문제인지 알 것 같다고 말씀주셔서 부탁드렸다.

이렇게 일단락 되는가 싶었으나..

코드컨플릭트 2차 해결

나포함 많은 분들이 작업하신, 파일들이 사라지거나 수정되는 현상을 발견할 수 있었다. 즉, 어딘가에서 문제가 발생했고, 그 문제에 따라 각자의 입장에 맞는 코드가 작성되었고, 그에따라 코드가 사라진 현상이 발생한 것이다. 나는 팀원들을 소집해서 작업을 중단시켰다. 일단 작업도 중요하지만, 컨플릭트는 산으로가면 백두산까지 가기 때문에 이걸 먼저 맞추고 가는것이 좋겠다고 말씀드렸다.전략은 다음과 같았다.

  1. 일단 origin 과 가장 거리가 먼 head를 가진 사람을 찾는다.
  2. 문제가 발생되기 전으로 되돌린다.
  3. 문제가 발생되지 않는 코드로 컨플릭트를 수정한다.
  4. 머지한다.
  5. 그다음 origin 과 가장 먼 head를 가진 사람을 찾는다.
  6. 문제가 발생되기 전으로 되돌린다.
  7. 문제가 발생되지 않는 코드로 컨플릭트를 수정한다.
  8. 머지한다. .. . .. . 이렇게 5명이 모두 같은 방법으로 일단 dev에 있는 코드를 맞추고 그걸 기점으로 다시 시작하는 것이다. 이렇게 하니 2,3시간이 후딱가긴했는데, 문제가 해결되었고 모두가 동일한 선상에서 코드작성을 시작할 수 있었다. stash와 reset 을 적절히 병합해서 문제를 해결했다. 문제의 원인은 프론트작업 할 때 각자 필요한부분들이 다르니, 다른 도메인 작업자에게 요청하지말고, 컨플릭트났을 때 수정하자! 라는 전략을 팀원들에게 제안해서 였다.

뼈져리게 후회하고 있고 해당전략을 다음엔 사용하지 말아야겠다는 다짐을 했다. 그래도 해결되서 다행이다!

@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.