솔로 개발자를위한 최고의 버전 관리 습관?


36

저는 저의 업무에서 유일한 개발자이며 VCS의 이점을 이해하고 있습니다. 좋은 관행을 고수하기가 어렵다는 것을 알게되었습니다. 현재 git을 사용하여 주로 웹 응용 프로그램을 개발하고 있습니다 (제 작업으로 인해 오픈 소스가 될 수는 없습니다).

현재 진행중인 워크 플로는 개발 사이트를 많이 변경하고 테스트, 수정, 테스트, 행복하고 변경 사항을 커밋 한 다음 커밋을 라이브 사이트로 푸시하는 것입니다. 일주일에 한 번 커밋하지만 IDE에 커밋되지 않은 작업에 대한 실행 취소 기록이 있습니다).

기본적으로 기계 사이를 전환 할 때 git 만 사용합니다 (예 : 업무용 컴퓨터를 가정용 컴퓨터 또는 라이브 컴퓨터로 전환).하지만 낮에는 실제로 이점을 보지 못합니다. 이것은 긴 세탁 목록 변경 사항을 갖도록합니다 (그리고 각 커밋에 대해 좋은 메시지를 찾는 데 어려움이 있습니다.

얼마나 자주 커밋해야합니까? 각 한 줄 변경이 커밋을 받아야합니까? 테스트하기 전에 커밋해야합니까 (예 : 적어도 구문 / 컴파일 오류의 경우 완전히 실행 취소해야합니다. 아이디어가 작동하지 않거나 메시지가 거짓말이기 때문에)?

저녁 식사가 아직 신선하면서 저녁 식사를하기 전에 매일 아침 / 오후에 커밋해야합니까? 나쁜 VCS 습관을 가지고 무엇을 놓치고 있습니까?


2
어쩌면 VCS가 효과가 없다고 느끼는 이유 중 하나는 Git을 솔로 개발자로 사용하고 있기 때문일까요? Git은 단일 개발자에게 너무 과장된 것 같습니다. 아마도 SVN과 같은 기능이 적은 간단한 것이 더 사용하기 쉬울까요?
maple_shaft

6
@maple_shaft : Git을 사용하지는 않았지만 Mercurial은 기본 솔로 개발자 작업을위한 Subversion만큼 간단합니다. (실제로 저장소와 동등한 항목을 작성하는 것이 더 쉬우므로 더 간단합니다.)
David Thornley

15
왜 자식이 과잉일까요?
Tamás Szelei

1
@maple_shaft 실제 혜택은 나중에 제공됩니다. 적은 비용으로 결제 할 필요가 없습니다.

3
git 및 mercurial과 같은 DVCS의 경우 소스 제어의 오프 사이트 백업 (일부 답변에서 언급 한 바와 같이)의 이점을 활용하려면 커밋뿐만 아니라 정기적으로 추진해야한다는 점을 언급 할 가치가 있습니다.
잡아 당김

답변:


24

당신은 많이 없습니다.

나도 솔로입니다. 나는 중요한 변화를 만들 때마다 또는 중요한 변화를 시작하기 전에 커밋하여 무언가를 망쳐 놓으면 다시 돌아갈 수 있고, 큰 것을 만들지 않아도 돌아갈 수 있습니다. 실제로는 아니지만 가깝습니다. 때때로 하루에 몇 번.

내가 얻는 것은 내가 원할 때 언제든지 돌아갈 수 있다는 것입니다. 많이입니다. 또한 가지를 주문하면 도움이됩니다.

나는 그것이 나에게 많은 주문을 준다고 생각한다.

나는 svn을 사용하고 있으며, 점점 아프다. 그러나 다른 것을 배우는 데 더 많은 시간을 할애 할 수는 없습니다.

행운을 빕니다.


+1 나는 최근에 VCS를 사용하기 시작했고, GIT은 나를위한 것이다 :)
yati sagade

1
너무 부피가 크거나 못 생겼다는 짜증이 나면서 오랫동안 버전 관리를 피했습니다. 몇 달 전에 저는 Subversion에 익숙해지기로 결심했습니다.
Dalin Seivewright

1
Github에 몇 가지 솔로 프로젝트가 있습니다. 특정 API / 도구를 배우기위한 표현 목적으로 무언가를 구축하더라도 항상 git을 사용합니다. @jbcolmenares가 설명하는 것처럼 더 유용한 실제 프로젝트에 좋은 습관을 강요합니다.
sarumont

2
hginit.com으로 "다른 것을 배우는데 더 많은 시간을 할애 할 수 없다"는 것에 반대 할 것 입니다. svn에서 1 주일 동안 화를내는 시간을 세고 다음 주에 hginit를 읽는 데 시간이 걸립니다.
tdammers

@tdammers가 살펴볼 것입니다
cauchy

18

자주 커밋해야합니다. 논리적 이정표에 도달 한 후에는 분명히 커밋해야합니다. 하루 이상 걸리는 경우 최소한 근무일이 끝날 때까지 커밋하거나 더 나은 작업을 더 작은 단위로 나눠야합니다.

그렇게하는 데는 여러 가지 이유가 있습니다. 예를 들어 컴퓨터가 충돌하면 어떻게됩니까? 일주일 또는 한 달보다 하루의 일만 잃는 것이 훨씬 좋습니다. 또 다른 이유는 커밋을 자주하면 버그를 쉽게 격리 할 수 ​​있기 때문입니다. 이진 검색을 수행하여 버그를 유발 한 작은 변경 사항을 파악할 수 있습니다.

또 다른 일 : 커밋하기 전에 diff를하고 모든 변경 사항을 살펴보십시오. 이를 통해 모든 변경 사항이 의미가 있는지, 그리고 잊어 버린 부분이 없는지 확인할 수 있습니다. 또한 더 나은 커밋 메시지를 작성하는 데 도움이됩니다. 물론 이것은 종종 커밋해야 할 또 다른 이유입니다. 한 달의 가치보다 하루의 가치있는 변화를 겪는 것이 훨씬 쉽습니다.


"컴퓨터가 충돌하는 경우"-파일이 디스크에 자주 저장되고 야간에 백업됩니다 (하드 디스크가 고장난 경우). 그러나 버그에 대한 이진 검색의 경우 +1이 유용 할 수 있습니다. 나는 내 버그의 95 %를 빠르게 찾는데 능숙하다. 그러나 때때로 프로그램의 다른 부분에서 겉보기에 필연적으로 변화하는 것에서 발생하는 정말로 기괴한 버그가 있습니다.
jimbob 박사

예, "디스크가 고장난 경우"또는 "천장이 움푹 들어간 경우"또는 "EMP 장치가 근처에서 떨어진 경우"를 의미합니다. :) 데이터 손실을 유발할 수있는 모든 것. 커밋은 작업을 백업하는 가장 쉬운 방법이며 원격 버전 제어 서버를 사용하여 오프 사이트 백업을 쉽게 수행 할 수 있습니다.
Dima

1
@Dima : 백업을
받기 위해 노력할

@liberforce 모든 버전 제어 시스템에 푸시 작업이있는 것은 아닙니다. 이 답변은 2012 년입니다. 당시 배포되지 않은 서브 버전을 사용하고있었습니다. 그래서, 밀지 마라.
Dima

2
@ Dima : 물론, OP는 git을 사용하고 있었으므로 SVN에 대해 이야기하고 있지 않다고 지시가 잘못 될 수 있습니다.
liberforce

10

CVS를 최대한 활용하려면 한 번에 하나의 기능 / 버그 수정을 작업하고 해당 기능 / 버그 수정이 완료되면 커밋해야합니다. 이렇게하면 다음을 얻을 수 있습니다.

  • 커밋 메시지는 작성하기가 더 쉬울 것이며 더 이해하기 쉽다.
  • 버그를 도입 한 변경 사항으로 향후 버그를 쉽게 추적 할 수 있습니다.
  • 이전 상태로 더 쉽게 되돌릴 수 있습니다 (실패한 기능은 잃어 버리지 만 나중에 발생한 버그 수정은 유지하더라도).

또한 PC간에 전환하기 때문에 최소한 두 개의 분기가 있어야합니다.

  • 항상 작동하는 "준비 완료"브랜치 (물론 개발 브랜치에서 작업중인 버그는 제외)
  • 때때로 출장이 불가능한 상태에있을 수있는 개발 지점

1
갈 준비가 되었습니까? 상사와 잠재 고객이 지나갈 때 소프트웨어를 몇 번이나 보여 달라는 요청을 받았는지 모르겠습니다. 플럭스 상태가 아닌 실제로 작동하는 버전을 사용하는 것이 좋습니다.
bluebill

작동하고 테스트되는 버전은 일반적으로 태그가 지정됩니다. 상사가 최신 변경 사항을보고 싶지 않다면 이것이 표시되어야합니다. 이 경우, 당신은 git stash당신이 가진 것을 보여 주거나 특정 커밋을 체크 아웃합니다. 물론 진행중인 작업이 크게 변경되는 경우에는 별도의 진행중인 작업 지점에 있어야하므로 마스터 지점은 사실상 안정적입니다.
liberforce

7

각 한 줄 변경이 커밋을 받아야합니까?

이것이 버그를 해결하는 것이라면, 확실합니다.

나쁜 VCS 습관을 가지고 무엇을 놓치고 있습니까?

나는 "나쁜 VCS 습관"을 가진 사람과 일했다. 그는 혼자서 일하는 것을 좋아했으며 연간 $ 1,000,000와 같은 제품 라인을 담당했습니다. 그는 상사가 그를 때릴 때만 커밋을했다. 그러던 어느 날 그의 하드 드라이브가 추락했습니다. 교체 기기를 설치 한 후 6 개월 전에 마지막으로 체크인했습니다. VCS는 소스 세이프 (Source Safe)이기 때문에 마지막 커밋이 손상된 다른 문제를 추측 할 수 있습니다. 우리는 그의 제품 라인의 손상되지 않은 버전을 얻기 위해 1 년 넘게 돌아 가야했습니다. 그는 해고 당했지만 해고되지 않았습니다.

또 다른 일화는 나 자신과 관련이 있습니다. 이동식 하드 드라이브에 취미 및 연구 프로젝트를위한 코드를 저장했습니다. 어느 날, 내 아파트가 고장났다. 랩탑 (파손)과 모든 이동식 하드 드라이브를 도난당했습니다. Red Dawn을 제외한 모든 DVD는 도난당했습니다. 데스크탑 컴퓨터를 도난 당하지 않았습니다. 오프 사이트 소스 제어가 있었다면 15 년 동안의 프로젝트를 잃지 않았을 것입니다. 특히 일부는 학업 프로젝트를 기반으로했기 때문에 많은 교수들이 학계를 떠나 사기업으로 떠나서 회사의 IP 블랙홀로 사라졌습니다. 복구 불가능한 코드를 잃어 버렸습니다.

얼마나 자주 커밋해야합니까?

몇 가지 메트릭으로 분류합니다.

  • 컴퓨터가 죽으면 얼마나 많은 일을 잃게 되겠습니까? 아니면 도난 당합니까?

  • 이로 인해 Bug_1234가 수정되면 주석 "Bug_1234 수정"으로 코드를 체크인하십시오.

  • 이것이 논리적 전달 / 마일스톤 인 경우 "Bug_1234, form_xyz"(또는 적절한 Task_1234)와 같은 주석으로 체크인하십시오.

  • 금요일 저녁에는 집으로 향하기 전에 항상 코드를 확인하십시오. 또한 휴가를 떠나기 전에 모든 것을 체크인 (또는 체크 아웃 취소)하십시오.

  • 회사 정책이 지시 할 때마다.


1
그 남자가 해고 당 했어야한다고 동의합니다. 최소한 릴리스에 대해서도 커밋하지 않는 것은 미쳤다. 1.2의 코드가 무엇인지 모르는 경우 버전 1.2에 나타난 버그를 어떻게 찾을 수 있습니까? 그 사람이 방금 코드 사본을 만들고 하드 드라이브에서 압축 했습니까?
liberforce

5

줄 변경 횟수를 고려하지 마십시오. 기능의 덩어리를 생각하십시오. VCS를 사용하면 각 기능 청크의 중앙 위치에 제목을 제공 할 수 있으므로 git log와 같이 "여기에서 발생한 일"을 쉽게 볼 수 있습니다.

또한 Eclipse와 같은 IDE를 사용하면 주어진 줄을 가리키고 커밋으로 이동하여 볼 수있는 모양으로 만들 수 있습니다. 즉, 소스 라인에서 커밋으로 직접 이동할 수 있습니다. 커밋이 작고 좋은 메시지가있는 경우 "고정 된 버그 수"보다 훨씬 도움이됩니다.


4

나는 버그가 언제 어디서 발생했는지를 추적하는 기능과 같이 변경 사항을 그룹화하여 놓친 가장 큰 것은 말할 것입니다.

내 경험상, 버그가 소개 된 지 2-3 주 후에 버그가 발견 된 지 몇 번이나 발견되었으며, 사실 이후로 1 주일 동안 커밋을 거르는 것이 어려웠습니다. 이러한 경우 커밋을 통해 이진 검색을 수행하여 어떤 개별 변경으로 인해 문제가 발생했는지 추적 할 수있었습니다. 이러한 버그는 주로 C ++ 코드의 메모리 사용 버그이므로 프로젝트에서 자주 발생하지 않을 수 있습니다.

팀에서 개발할 때 간단한 커밋 주석, 더 쉬운 병합, 커밋 관련 버그 수정 등과 같은 다른 이점도 있습니다.

워크 플로에서 매일 또는 반일 커밋을 시작하면 라이브 사이트에서 사용중인 코드 버전을 추적하기 위해 태그 또는 책갈피를 사용해야합니다. 나는 그것이 추적해야 할 가장 중요한 것이라고 말하고 싶습니다.


4

나도 솔로 개발자이며 SVN을 사용하고 그것을 좋아합니다. 데이터베이스의 구조와 테스트 데이터를 XML로 변환하여 소스 제어에 포함시킬 수있는 도구도 작성했습니다.

저는 보통 자율적 인 작업 단위를 완료 할 때마다 커밋합니다. 때로는 사소하고 관련없는 한 줄 수정을 여기저기서 수행하면 모두 함께 커밋하지만 두 개의 관련이없는 큰 자율 작업 단위 사이에서 한 줄 수정이 발생하면 자체 수정됩니다. 커밋, 아무 문제가 없습니다.

또한 항상 컴파일하는 코드를 커밋하고 거의 모든 기본 테스트를 통과하는 코드를 커밋합니다. 그렇지 않으면 커밋 메시지에 "작동하지 않습니다"를 포함시켜야합니다. 이것이 일어나는 유일한 경우는 내가 아직 작동하지 않더라도 잃고 싶지 않은 중요한 변화를 겪었을 때입니다.이 위에 나는 확실하지 않은 위대한 리팩토링 모험에 착수하려고합니다. 성공할 것입니다. 따라서 저장소를 엉망으로 버릴 위험이 있기 전에 지금까지 수행 한 작업의 백업으로 저장소를 사용합니다.

즉, 소스 코드를 커밋해야 할 때 항상 커밋합니다. 아침 커밋 또는 저녁 커밋 규칙을 갖는 것은 절대 의미가 없습니다. 코드가 커밋 할 시간인지 여부를 나타내는 상태입니다.

저장소에 넣은 메시지는별로 중요하지 않습니다. 의미있는 것을 내놓을 수없는 경우, 빈 메시지를 커밋하는 것이 필요할 때 전혀 커밋하지 않는 것보다 낫습니다.

좋은 커밋 메시지를 생각할 수 없다면, 멍청한 소리가 들리기 때문에 이것이 괜찮다는 것을 명심하십시오. 커밋 메시지는 명백한 내용을 나타내야하므로 메시지를 작성할 때 어리석게 들릴 것입니다. 그러나 한 달 후에 이전 개정판을 검토해야하는 경우 메시지가없는 멍청한 메시지에 대해서도 감사하게 생각합니다.


1

"논리적"변경을 할 때마다 커밋하십시오. 예를 들어 새로운 기능을 구현하는 경우 단계별로 수행합니다. 이러한 각 단계는 일반적으로 서로 다릅니다. 따라서 해당 단계를 별도로 커밋하고 커밋 메시지에서 각 단계가 필요한 이유를 설명 할 수 있습니다.

커밋 메시지는 정말 중요합니다. 당신이 말하는 피해야한다 무엇을 말해, 당신이하고있는 이유는 당신이 그 일을하고 있습니다. 이 코드에는 이미 변경 사항이 기록되어 있지만 6 개월 안에 변경 한 이유를 알게되어 기쁩니다.

우연히 누군가 뛰어 들어 더 이상 혼자가 아닌 경우에도 유용합니다. 당신을 위해서라도, 깔끔한 기록은 git blame버그가있는 라인이 언제, 왜 변경되었는지 알기 쉽게 해줍니다 .

커다란 진흙 변화 대신 작은 커밋 을 수행하면 중간 상태를 테스트 할 수 있습니다. 긴급하게 무언가를 놓아야 할 경우 변경 사항을 숨길 수 있습니다. 이전에 버그가 발생한 상태에서 버그를 도입 한 경우 버그를 유발하는 커밋되지 않은 변경 사항인지 또는 이전 커밋에 있는지 여부를 숨기고 확인할 수 있습니다.

당신은 또한 그 힘을 발휘 git bissect하여이 불쾌한 버그라는 것을 약속 할 것입니다. 커밋 길이가 2,000 줄이면 여전히 도움이되지만 그렇게 많이하지는 않습니다 ...

또 다른 것은 이것이 CI (Continuous Integration) 및 CD (Continuous Deployment)의 첫 번째 단계라는 것입니다. CI 및 테스트는 새로운 커밋에서 트리거 될 수 있으므로 변경 사항이있을 때마다 변경 사항을 적용 할 때마다 알려줍니다. 이렇게하면 배포가 안전한지 알 수 있으며 서두를 때 릴리스 직전이 아니라 문제가 발생한 시점에 알림을받을 수 있습니다.

다른 질문에 대해 :

  • 에 대한 기록을 기꺼이 다시 쓰지 않는 한 (을 사용하여 git rebase --interactive) 컴파일하지 않은 내용은 커밋하지 마십시오 .
  • 한 줄 변경은 별도의 목적이있는 경우 (버그를 수정하거나 현재 커밋되지 않은 변경과 관련이없는) 커밋이 필요합니다. git add --patch준비하는 데 사용하십시오 .
  • 잃을 여유가없는 중요한 물건이 없다면 저녁 식사 전에 자신을 강요 할 필요가 없습니다. 이 경우 진행중인 작업을 별도의 지점에서 수행 할 수 있습니다.
  • 원격 저장소에 커밋하고 푸시하는 것은 백업입니다. 일주일에 한 번만 커밋하고 푸시하면 최악의 시나리오에서 일주일의 작업을 잃을 수 있습니다.

0

얼마나 자주 커밋해야합니까?

솔로 개발자로서 나는 기본 테스트 후 밤새 프로젝트를 떠날 때 크게 변경되었다고 생각 될 때마다 일반적으로 커밋합니다.

각 한 줄 변경이 커밋을 받아야합니까?

한 줄만 변경해도 기능이나 버그가 크게 변경되지 않는 한 아닙니다.

테스트하기 전에 커밋해야합니까 (예 : 적어도 구문 / 컴파일 오류의 경우 완전히 실행 취소해야합니다. 아이디어가 작동하지 않거나 메시지가 거짓말이기 때문에)?

아마 아닙니다. 적어도 나를 위해 나는 대부분의 테스트와 코딩을 '작업 카피'로하고 변경 사항에 만족 한 후에 커밋합니다. 많은 IDE에서 실제로 커밋하기 전에 변경된 내용을 보여주고 커밋에 메모를 첨부 할 수있는 기회를 제공합니다.

저녁 식사가 아직 신선하면서 저녁 식사를하기 전에 매일 아침 / 오후에 커밋해야합니까? 나쁜 VCS 습관을 가지고 무엇을 놓치고 있습니까?

나는 VCS에 대해 잘 모르거나 그것이 어떤 나쁜 습관을 일으키는 지 잘 모른다. 나는 첫 번째 질문에 대한 답변으로 이것에 대한 의견을 대부분 공유했다고 생각합니다.

가정 된 일반적인 질문에 대한 응답으로, 대부분의 커밋을 다른 응답자 게시물에서 다루는 분기로 사용하는 것 같습니다. 실행 취소 기록 등이 좋은 IDE를 사용하고 있는지 확실하지 않지만 IDE를 다시 시작하고 컴퓨터간에 이동하는 것 이상으로 기분이 좋은 것을 찾지 못했습니다.


I am not very familiar with VCS or what bad habits it causes.운이 좋다!
yannis

1
어떻게 여러 번 잘못 읽었는지 모르겠지만 Visual source safe에서와 같이 계속 'VSS'로 읽었습니다. SVN 및 GIT를 포함한 다른 버전 제어 시스템에 익숙하고 자주 솔로 개발자로 사용하지만 대규모 멀티 개발자 시나리오에서 실제로 사용하지 않았다는 점을 고려할 때 몇 가지 나쁜 습관이 있습니다. .
dbuell

글쎄, 내가 3 년 이상 SourceSafe와 싸워 왔지만, 나의 의견은 여전히 ​​유효합니다 : Lucky you! 그 후 3백메가바이트, - 당신에게 예를 제공하기 위해, VSS6 약 200메가바이트의 저장소를 처리 할 수 있다면 당신은 운이 몇 개의 파일이 무작위로 손상 될 것이다. 물론 여러 가지 수정, 해결 방법 및 VSS가 MS에 의해 완전히
풀린 vc

0

나는 습관적인 커미터이고 나에게 맞는 것을 알았지 만 커밋 메시지는 거의 항상

Age:  9 mins [*] Working on implementing and testing PaintSystem.
Age: 17 mins [*] Working on implementing and testing PaintSystem.
Age: 37 mins [*] Working on implementing and testing PaintSystem.
Age: 52 mins [*] Working on implementing and testing PaintSystem.

따라서 내 지점 (수은)에 대한 이러한 빈번하고 습관적인 커밋을 수행하면 가장 자세한 커밋 로그를 정확히 장려했다고 말할 수는 없습니다. 예를 들어, 아내가 저에게 저녁 식사를하러 가라고 요청하면 이전의 "Working on [...]"커밋 메시지를 급히 복사하여 사용할 것입니다.

커밋 로그 패턴은 일반적으로 다음과 같습니다. "Working on [...] Working on [...] Working [...] Completed [...] Started working on [...] Working on [...] Completed [...] Started working on [...]"

반대로, 그것은 내 엉덩이를 구했습니다. 때로는 예상하지 못하고 테스트하지 않은 에지 케이스를 사용하기도합니다.

그래서 나는 최고의 습관에 대해 알지 못하고 이상적인 커밋 로깅 습관까지 듣는 것은 아니지만, 더 자주 커밋하면 회귀를 수행해야 할 때 확실히 도움이 될 수 있다고 말할 수 있습니다.

각 한 줄 변경이 커밋을 받아야합니까?

나는 한 줄 변경을 저지른 적이 있지만 일반적으로 까다로운 변경을 한 적이 있고 시간이 부족했을 수도 있습니다. 나의 커밋이 항상 완벽하고 완전한 작업 단위 또는 변경과 유사한 것은 아닙니다. 말했듯이 때로는 아내가 예기치 않게 저녁 식사를하라고 요청한 결과 일뿐입니다.

TBH 그 "Working on [...]"로그 패턴 을 따르는 많은 커밋 은 일관된 변화 단위를 모델링하지 않고 (왜 내가보다 더 나은 메시지를 내놓을 수 "Working on [...]"없는가) 나 자신을 커피 한 잔처럼 만드는 숨을 쉬는 결과입니다. 이 "Completed [...]"메시지는 해당 작업 단위의 끝을 나타내며, "Started working on [...]"작업을 시작할 때 첫 번째 유형의 메시지 와 함께 훨씬 더 자세한 메시지를 작성하는 경우가 많습니다 . 15 분마다 한 번씩 커밋을 평균하면 "Working on [...]"메시지는보다 자세한 메시지를 통해 한 번의 커밋 커밋에서 커밋 할 수있는 사람과 비슷합니다.

테스트하기 전에 커밋해야합니까 (예 : 적어도 구문 / 컴파일 오류의 경우 완전히 실행 취소해야합니다. 아이디어가 작동하지 않거나 메시지가 거짓말이기 때문에)?

때로는 테스트를 실행하기 전에 (예기치 않은 이벤트가있는 경우) 계속 진행합니다. 또한 솔로이지만 CI를 수행하는 서버 (LAN에서 집에서 실행되는 서버)로 푸시합니다. 그것은 지나친 것처럼 보이지만 몰라, 나는 이전 직장에서 그것에 기대어 익숙해졌습니다. 또한 매번 모든 단위 및 통합 테스트를 수동으로 실행해야하는 번거 로움이 없습니다. 나는 모든 것을 밀어 붙이는 것을 좋아합니다. 테스트가 실패하면 회귀를 수행하는 최신 방식으로 작업하고 최신 개정판에서 실수를 수정 한 후 계속 진행하기가 쉽습니다. 그건 내가 적어도 이렇게 말했다 빌드 내가 커밋하기 전에 디버그 빌드에 대해 코드를.

저녁 식사가 아직 신선하면서 저녁 식사를하기 전에 매일 아침 / 오후에 커밋해야합니까?

나는 나가기 전에 커밋하고 프로그래밍 사이에 휴식이 있습니다. 나는이 질문에 직면 할 때까지 정확히 왜 많은 생각을하지 않았습니다. 나는 그것이 내가 다른 곳으로 갈 수있는 곳 대신에 커밋 로그없이 내가 떠났던 곳을 집어 들지 못하게하는 것이라고 가정한다. 흠, 나는 얼마나 자주 커밋하는지 이론적으로 필요하지 않기 때문에 당신에게 다시 연락해야합니다. 나는 어떤 이유로 든 컴퓨터를 떠나기 전에 여전히 커밋하고 밀어 붙는 것이 더 편하다고 생각합니다. 예를 들어, 이전의 심리적 두려움은 SVN을 사용하던 시절에 컴퓨터를 나가고 난 후 프로젝트 관리자가 다시 목을 숨기지 않고 몇 주 동안 갈 때 프로젝트 관리자가 목을 숨기지 않고 가능한 한 자주 코드를 확인하도록 상기시켜줍니다. 우리의 코드는 회사의 재산입니다. 또한 나가는 동안 CI 프로세스가 모든 테스트를 실행하여 돌아와서 결과를 볼 수 있도록 특히 밀어 넣기가 조금 더 효율적입니다.

아 그리고 때때로 나는 떠난 후에 약간 취하게되는데, 일반적으로 취한 상태에서 복잡한 코드를 작성하는 것은 좋지 않은 생각입니다. (항상 그런 것은 아닙니다. 그러나 나는 단지 6 개의 맥주를 좋아했고 코딩하기가 그렇게 복잡하지 않았습니다). 나는 그렇게하려고하면 내가 대신 포인트처럼 읽을 수있는 로그를 커밋의 나되는 냉정한 코드로 술에 취해 코드를 혼합으로 다시 되돌릴 떠나기 전에, 적어도 나는 진지하게 작성된 코드를 최선을 다하고, "Reverting back to code written before Jagermeister shots."나는이 작업을 수행하지 않습니다 술에 취한 코드 영감을 얻지 않는 한 매우 빈번하지만 드문 경우에 나가서 술에 취하기 전에 무언가를 저지르는 것이 실제로 도움이되었습니다.


당신을위한 경험 법칙 : 동일한 메시지를 가진 두 개의 연속 커밋이 있다면 거의 확실하게 잘못하고있는 것입니다. 그것들은 하나의 커밋이거나 그들과 다른 점을 파악하고 그 차이를 반영하는 로그 메시지를 작성해야합니다 (예 : "페인트 시스템에서 작업하기"x2보다는 "새로운 페인트 데이터 정의"및 "페인트 데이터를 올바르게 설정").
Marnen Laibow-Koser 16:16에
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.