소스 코드를 체크인하기 전에 어떤 좋은 방법이 있습니까? [닫은]


47

우리 팀은 소스 제어를 위해 Team Foundation Server를 사용하고 있으며 오늘 체크인하기 전에 몇 가지 버그와 연기 테스트 응용 프로그램을 수정했지만 코드를 주석 처리하는 것을 잊었습니다. (이 코드는 UI를 조금 이상하게 만들었습니다.)

코드를 체크인하기 전에 어떤 모범 사례가 있는지 알고 싶습니다. 다시 이런 종류의 실수를하고 싶지 않습니다.

답변:


149

내가하는 습관에서 얻은 한 가지는 항상 체크인하기 전에 체크인하려는 모든 파일의 차이점을 보는 것입니다.


46
+1 그것은 명백하지만, 누군가가 이것을하지 않으면, 그들은 잘못하고 있습니다!
David Heffernan

6
+1 실제로, 그것은 분명하지 않지만, 그렇게하지 않으면 죄송합니다.
Nemanja Trifunovic

14
+1 또한, 이것이 너무 많은 일이라고 생각한다면, 당신은 아마도 한 번에 너무 많은 일을하고있을 것입니다.
mpeterson

5
또한 diff를 살펴보면 특히 여러 번 수정 한 경우 변경 사항으로 달성하려는 내용에 대한 설명 노트를 쉽게 알 수 있습니다.
조나스

4
그 가치를 통해 찾고 있지 않다면, 아마의 가치가 검사하지 않습니다.
로버트 Jeppesen이

63

주석 처리 된 코드를 체크인해서는 안됩니다. 체크인 전에 주석 처리해야하는 코드가있는 경우 잘못된 코드입니다.

규칙에 관해서는 :

  1. 최신 정보 받기
  2. 병합 충돌 수정
  3. 짓다

    3.1 빌드 오류 수정

  4. 테스트 실행

    4.1 고장난 테스트 수정

  5. 1로 가십시오 (얻을 새로운 것이 없을 때까지)

모든 단계가 완료된 경우에만 체크인하십시오.

체크인 댄스를 참조 하십시오 .


다른 모범 사례 :

  • 체크인 할 파일 목록을 검토하여 예상 파일인지 확인하십시오.
  • 각 파일의 변경 사항 검토 (삭제 / 추가 / 차이)

나는 여기서 두 번 가져 갔다. 아마도 '코멘트 된 코드'를 의미합니까? 내 자신은 주석 처리되지 않은 코드를 체크인하지 않기로 기대했다!
Pontus Gagge

11
+1-바로 완벽한 목록입니다! 건물을 깰하지 마십시오!
ozz

1
@Philip - 그래서 당신이로 알고 이 너무 오래이 간단 좋은 연습과 아니라고 단기 중간은, 다음이 그 규칙을 깰 수있는 몇 가지 경우 중 하나입니다. 사람들이 코드에 주석을 달아서 코드를 잃지 않도록 할 때 더 많은 것을 알 수 있습니다.
오디드

2
@Philip, git이 좋은 이유입니다. 원하는만큼 자주 WIP 변경 사항을 로컬로 커밋 한 다음 기본 리포지토리로 푸시하기 전에 rebase -i로컬 히스토리를 정리하고 필요에 따라 커밋을 스쿼시 할 수 있으므로 메인 라인에 추악한 작업 진행 커밋이 없습니다.
Alex Budovski


20

내가 너무 여기에 pantsweasel의 되려고 노력하고 있지 않다,하지만이 질문에 가정 (모든하지만 대답 중 하나) 대부분 같은 TFS, SVN, 억지로, 등 중앙 집중식 VCS에 적용
페어 충분히, 그것은 무엇을의 OP가 사용 중입니다.

그러나 DVCS (예 : Mercurial 및 Git)를 사용하는 경우 일반적으로 체크인 대기하지 않아야하며, diff, 최신 정보, 병합 등과 같은 답변에 언급 된 대부분의 항목은 필요하지 않습니다. . 코드 검토 및 테스트와 같은 것조차 체크인 후 수행하는 것이 좋습니다 (아마도 푸시하기 전에 ...)
지금까지 본 예외는 작업 항목과 관련이 있습니다. 물론 체크인에 대한 의견도 좋습니다 ...


5
체크인에 댓글을 올리려면 +1 내 가게의 정책은 아니지만 나중에 추억을 조깅하기 위해 항상 설명 메모를 남기려고합니다.
PSU

동의 -Oded의 워크 플로 는 각 단계 사이 또는 최소한 각 루프 사이의 버전 제어에서 많은 이점을 얻을 수 있다고 생각합니다 .
Kevin Vermeer

7
체크인 할 때부터 푸시 할 때까지 모든 단계가 진행되지는 않습니까?
user13278

@ user13278 그들 중 일부는 다르지만 다릅니다. 예를 들어 병합은 완전히 다른 경험입니다. 밀고있는 동안에는 최신 병합 병합주기가 필요 없습니다. 그리고 모든 변경 세트에 대해이를 수행 할 수 있으며 모든 체크인을 다시 수행 할 필요는 없습니다. 일반적으로 이러한 단계 중 많은 부분은 더 이상 체크인과 관련이 없습니다. 예를 들어 체크인하거나 푸시하기 때문에 원하는 것이 아니라 당기면됩니다. 물론 테스트해야 할 필요가 있지만 자체 시간 범위에있을 수 있습니다. 푸시는 여전히 훨씬 가벼우 나 물론 쓰레기를 밀지 않도록해야합니다.
AviD

2
+1. 작업 항목과 연결하는 것은 Git 또는 Hg에서 가장 어려운 작업입니다. Kiln과 같은 전체 패키지를 실행해야합니다. 이것은 TFS가 좋은 유일한 영역입니다. 버전 관리에는 해 롭습니다.
Robert Jeppesen

8

다른 답변에서 보지 못한 세 가지 :

새 파일 포함

  • 변경 목록에 포함되지 않은 새 파일을 찾으십시오.
  • Perforce와 같은 SCM에만 해당 될 수 있습니다. 변경 사항에 대한 모든 정보를 제공해야합니다.

변경되지 않은 파일 되돌리기

  • 나는 다른 사람들의 변경 사항을 볼 때 싫어하고 9 개의 파일이있는 변경 목록이 있지만 그중 3 개만 수정되었습니다.
  • 또한 공백이나 의미없는 변경 사항이있는 파일을 되돌립니다.

제출 한 커밋 확인

  • 커밋 후에 빌드가 녹색으로 유지되는지 확인하십시오.
  • 커밋 후에 동기화, 빌드 및 실행하는 두 번째 컴퓨터를 사용했기 때문에 문제가 발생하면 쉽게 뛰어들 수 있습니다.

Git을 사용할 때 두 가지 :

원자 커밋 :

  • 커밋을 위해 개별 기능 변경 만 준비하십시오.
  • 커밋을 가능한 작게 만드십시오. 패치, 되돌리기 및 이해하기 쉽도록하십시오.
  • 내가 사용 git add --patch필요한 경우 여러 부분으로 내 변화를 분할 할 수 있습니다.

요약하는 동안 차이점보기

  • git commit --verbose커밋 메시지를 입력하는 동안 항상 변경 사항을 확인할 수 있도록 항상 체크인 합니다. (또는 패치 된 git-vim 을 사용하여 diff를 표시합니다.)
  • 이를 통해 변경 사항을 쉽게 처리하고 커밋 전체를 설명 할 수 있습니다. 때때로, 나는이 단계에서 의도하지 않은 변화를 잡습니다. (변경 내용을 설명하면 변경에 대해 생각하는 데 도움이됩니다.)

원자 커밋에 대해 언급 한 사람은 +1입니다.
Stephen Paulger

7

팀 서버에 적용하는 '좋은 습관'몇 가지 항목은 매우 간단합니다. 먼저, 체크인하기 전에 항상 코드를 충돌시킬 수있는 다른 사람을 확인하지 않도록 항상 최신 상태를 유지하고 로컬 빌드를 실행해야합니다. 또한 서버가 아닌 로컬 컴퓨터의 코드 충돌을 처리하십시오. 최신 코드가 다운로드 된 코드가 빌드되고 제대로 작동하는 것으로 확인되면 다음 단계를 수행 할 수 있습니다. 자동화 된 테스트를 실행 한 다음 체크인을 시작하여 여전히 제대로 작동하는지 확인하십시오. 그런 다음 확실하게 최신 정보를 다시 받으십시오.

TFS 관리자는 모든 체크인에 대해 주석을 달 수 있습니다. 작업 여부에 관계없이 항상 귀하의 작업에 대한 체크인 의견을 작성하는 것이 좋습니다. 그렇게 할 수있는 옵션이 있다면 시행하십시오. 주석은 최소한 코드를 마지막으로 체크인 한 이후 변경 한 내용에 대한 일반적인 요약이어야합니다. 이렇게하면 문제가 발생하면 체크인을 살펴보고 대략적인 내용을 확인할 수 있습니다. 체크인시 변경되었습니다. 깨진 빌드를 훨씬 쉽게 디버깅 할 수 있습니다.

또한 TFS 관리자 권한이있는 경우 체크인시 롤링 빌드를 시행하고 (체크인이 문제를 겪는 경우 다른 사람이 즉시 알 수 있도록) 게이트 된 체크인을 수행하도록 서버를 설정할 수 있습니다 ( 체크인 된 코드가 빌드를 중단하면 서버가 거부합니다) 또는 단순히 버그를 생성하여 빌드를 위반 한 사람에게 할당하도록 할 수 있습니다.

모든 것을 제대로 유지하기 위해 켜거나 끌 수있는 몇 가지 다른 옵션이 있으며, TFS 관리자에게 설정하여 물건을 깨끗하고 깨끗하게 유지하도록 제안 할 수 있습니다.


나는이 답변을 좋아한다. QA로서 때때로 우리는 커밋에 대한 버그를 추적하여 버그를 발견했으며 설명적인 의견을 제시하는 것이 좋습니다. 또한 출시시 매장에서는 새로운 기능과 변경 사항을 요약 한 릴리스 노어 (release nores)를 생성하며 체크인 정보는이 정보의 중요한 소스입니다.
오메가 센타 우리


4

Windows에서 체크인하는 경우 코드에 보이지 않는 ^ M 문자가 없는지 확인하십시오 .UNIX의 편집기는 종종 오류 / 경고를 유발합니다.

또한 탭을 시도하고 교체하십시오. 다른 사용자는 4 개의 공백이있는 탭 스탑을 다르게 보게 될 것이며 8은 코드 가독성에 좋지 않습니다.

최선의 방법 IMHO는 미리 정의 된 스크립트로 조직의 코딩 지침에 따라 코드를 확인하도록하는 것입니다. 많은 소스 제어 시스템에이 기능이 있습니다.


4
^ M 문자를 검사하는 것은 UNIX 상자가 실제로 개발 프로세스에 어떤 방식 으로든 관련된 경우에만 의미가 있습니다. 일부 회사는 모든 Windows 상점입니다.
Dima

1
바로 그거죠. 이것이 탭을 사용하지 않는 이유입니다.
Alex Budovski

일부 SCM은 줄 끝을 처리합니다 (일부는 다른 것보다 낫습니다). Perforce ( kb.perforce.com/?article=063 ), git (git config의 core.eol), svn (svn : eol-style) 등
idbrii

@Alex : 또는 어디서나 탭을 일관되게 사용합니다. 일관된 한 어떤 일을하든 상관 없습니다 .
Donal Fellows

@donal, 아니 여기에 문제가 있습니다. 탭은 편집기 구성에 따라 달라 지므로 본질적으로 일치하지 않습니다. cmd.exe 및 대부분의 Linux 콘솔과 같은 일부 "편집기"는 구성 할 수 없으므로 자신과 일치하지 않을 수도 있습니다.
Alex Budovski

4

우리 회사에서는 체크인 리뷰를 사용합니다. 이것들은 자세 할 필요는 없지만, 변경 목록에 다른 사람을 보여주고 대화를하는 것만으로도 테스트에서 놓친 이상한 오타가 강조 될 수 있습니다.

의견에 검토 자의 이름을 기록하지 않으면 소스 제어 서버에서 체크인 할 수 없습니다 (Bruce Wayne이 검토 한 경우! BW와 같은! initials 형식). 검토자는 검토에 도움이되었다는 이메일을받습니다. 이것은 명백한 착취에 개방적이지만 꽤 잘 작동하는 것 같습니다.


4

가능하면 체크인을 작업 항목과 연결하고 싶습니다. 이를 통해 변경된 내용뿐만 아니라 변경된 이유에 대한 컨텍스트 정보를 얻을 수 있습니다. TFS에는 상당히 괜찮은 작업 항목 추적 시스템이 있으므로 체크인시 수행하기가 쉽지 않습니다.

(이것은 내 변경 사항의 차이점을 검토하는 것 외에도)


2
이는 작업 항목에 연결 하지 않고 코드를 체크인 할 수 없도록 체크인 정책으로 설정할 수 있습니다 .
John Saunders

좋은 지적이야, 존 나는 실제로 내가 일하는 곳에서 이것을 빨리하기를 바라고있다.
mpeterson

물건을 집행하는 것은 일반적으로 비생산적입니다. 대신 사람들에게 유익하다는 것을 사람들이 이해하도록하십시오.
Robert Jeppesen

3

내가하는 한 가지 작은 일은 실제로 변경되지 않은 파일을 체크인하지 않는 것입니다. 이러한 파일이 실수로 수정되었거나 롤백되었거나 다른 방법으로 리팩토링에 관여했을 수 있습니다.

이렇게하면 작업 항목과 관련된 변경 집합에 작업 항목을 충족시키는 데 필요한 파일이 정확하게 포함됩니다.


3

여기에 모든 답변을 결합하고 완전한 체크리스트를 제공하려면

  1. [체크인 / 체크 아웃] 다른 사람이 작업중인 스트림에 직접 체크인해서는 안됩니다. 스트림 전략이 있어야합니다. 예를 들어 개발자마다 다른 사람을 방해하지 않고 독립적으로 체크인 및 체크 아웃 할 수있는 스트림 : 작업은 안전하지만 자신의 개발 흐름에 따라 [자신의 개발 흐름에서만]. 체크인 할 때마다 변경 레코드와 변경 레코드를 연결하여 변경 세트라는 변경에 대해 변경 사항을 원자화합니다 (따라서 '모든 것'을 전달하지 않고도 개별 rfc / 버그 등을 배포 할 수 있습니다).

  2. [그러면 팀 스트림으로 리베이스] 자신의 스트림에서 다른 사람들로부터 변경 사항을 얻음을 의미합니다. 이 작업을 수행하는 동안 병합 대화 상자에서 모든 "diffs"를 볼 수 있습니다. 또는 수천 개가 있거나 코드를 사용하지 않고 데이터 모델 / siebel 프로젝트 등을 사용하는 경우 ... 사소하지 않은 병합, 사소한 자동 및 사소한 수동 병합, 마지막 범주에는 어려운 항목이 포함됩니다. 여전히 자신의 스트림에서 작업하고 있음을 기억하십시오.

  3. [완전히 리베이스] 모든 것이 정상이라면, 팀 스트림에서 방금 변경 한 모든 사항을 확인하십시오. 자신의 스트림이 최신입니다.

  4. [배달]은 이제 팀 스트림으로 작업을 전달합니다. 모든 것을 제공하고 싶지 않다면 특정 버전의 파일 또는 해결 된 RFC / 결함 세트가 포함 된 1 개의 특정 RFC를 선택할 수도 있습니다.

  5. [테스트 제공] 괜찮아 져야하지만 그 동안 누군가가 변경 사항을 전달했을 가능성이 있으므로 팀 스트림의 최신 변경 사항으로 작업이 작동하는지 테스트 할 수 있습니다. 차이점을 보여주는 동일한 병합 대화 상자가 있습니다.

  6. [전달 완료] 전달 완료 및 작업이 이제 팀 스트림에 있습니다.

더 복잡하게 만들려면 : 여전히 제공 한 작업 = ok 일 가능성이 여전히 있지만 이미 다른 버전에서 작업하는 경우 제공 한 후에 항상 기준을 설정하고 다른 사용자가 재베이스를 선호하는 기준을 지정해야합니다. . 따라서 다른 개발자가 스트림의 최신 버전이 아닌 권장 버전을 얻을 수 있습니다 (해당 시나리오에서 작업중인 경우). 또한 팀 스트림의 최신 버전이 "나쁜"경우에도 다른 사용자가 기반을두고 있거나보고있는 버전이 아니며 구성 관리자가 이전 버전을 다음 버전으로 병합하여 실행 취소 할 수있는 트리플 확인도 수행합니다. 당신의 배달.

  • histumness의 대답은 2 번 발생합니다 : 2 단계와 6 단계
  • Odd on check-in dance : idem이지만 체크인 / 체크 아웃시 추가 전달 및 재 계층 기능을 통해 격리 된 작업을 수행하고 이후 단계에서도 오류를 쉽게 쉽게 제거 할 수 있습니다.
  • 대답 된 길드 바운티의 대답 : 최신 단계는 2 단계입니다. 빌드의 경우 : 실제로 빌드가 있는지 여부에 달려 있습니다 ... 내 세계에는 데이터 모델, 워드 문서, 요구 사항 시트, 정보 시스템의 구성 데이터, siebel, 등등. 그렇습니다. 자바 코드, .net 코드 등도 모두 함께 어울려야합니다. 따라서 여기에는 실제로 "빌드"가 없지만 "코드"에서 빌드하는 단일 항목이 통합 항목인지 여부에 따라 확실하지 않기 때문에 나머지 코드와 통합하는 경우에 따라 더 높은 통합이 가능합니다. 그들의 테스트 환경은 컴파일 될 수있는 것들이 필요하거나 다른 팀의 무언가를 필요로하기 때문에 다른 빌드를 더 많이 제공 할 수 있습니다.
  • guildsbounty의 논평과 요구에 대한 답변 : 나는 당신이 VERSIONS와 변경 세트 (및 유형 : 결함, RFC, hotfi)의 변경이 통합되지 않은 모든 환경이 성숙하지 않다고 생각합니다. (예를 들어 hello.c의 버전 1과 버전 3은 매우 잘 전달 될 수 있지만 버전과 같이 전달할 수있는 정확한 버전으로 클릭 할 수있는 제출 된 버그 및 rfc의 양으로 릴리스 노트를 자동화 할 수없는 경우 혼란이 있다고 생각합니다.) 2는 아직 출시되지 않았지만 일부 멍청한 놈이 이미 그것을 넣었 기 때문에 전달되지 않아야합니다. 따라서 hello의 버전 3을 꺼내고 싶다면 수동 결정을 의미합니다. c 그러나 버전 3을 제거한다는 것은 RFC / 결함에 의해 닿은 다른 모든 버전도 제거해야한다는 것을 의미하므로 여러 개발자가 일부 작업을 수행 한 경우에도 도구를 사용하여 쉽고 빠르게 작업 할 수 있어야합니다. 같은 RFC)) 적어도 그것을 결정하기 위해서는 주변에 물건이 필요합니다 ...). 추가 문서는 항상 편리하지만 변경 세트를 연결하면 버전 <-변경 세트 <-작업 항목 <-티켓 / rfc / 결함 <-요구 사항과 같은 완전한 원을 얻게됩니다. 의미 : 어떤 요구 사항이 완전히 또는 완전히 전달되는지 알고 있습니다. 하나의 요구 사항에는 여러 RFC 또는 버그가 있습니다. RFC에는 여러 사람을위한 여러 작업 항목이 있습니다. 해당 작업 항목은 버전 1 (예 : 버전 1이 아닌 통합 스트림에서 hello.c의 버전 1 및 3)으로 존재하는 변경 세트에 해당합니다.
  • luis.espinal의 의견 : 빌드를 중단하지 말고 rebase에서 다시 확인하고 여전히 전달하십시오 ... 변경 세트와 기준을 정보로 볼 수있는 '릴리스 관리자 및 빌드 마이스터'에 대한 더 높은 배달이 있습니다. "메인 브랜치에서 직접 작업하지 마십시오."예. 스트림 구조는 크거나 간단 할 수 있지만 본질적으로 개발자는 자체 스트림을 가지고 있으며 릴리스 스트림을 제공하는 팀 스트림으로 전달합니다. -> 모든 팀 (예 : 문서 팀, 요구 사항 팀, 개발 팀,

귀하의 예에서 코드 주석 처리를 잊어 버렸습니다. 실수가 발생합니다. 주변의 구성 관리 시스템이이를 관리해야합니다. 예를 들어 수천 개의 변경 사항이 발생하고 "빌드"및 "통합"이 시간에 따라 연결되고 처리 된 다른 서버의 스트림 계층 구조에서 발생하는 것일 수 있습니다. 따라서 5 개월이 지난 후에도 코드가 다른 코드 및 시스템과 통합되어야하므로 주석 처리 된 코드가 통합 서버에서 테스트 된 경우에도 변경 세트를 원자 적으로 제거하여 계속 수행 할 수 있습니다. 따라서 모범 사례는 다소 높은 수준입니다. 구성 관리 스트림의 전체 디자인이이를 관리해야합니다. 개별 개발자의 경우 모범 사례는 물론 검증 / 단위 테스트입니다. 그러나 큰 그림에서 "


2

다음 중 일부는 SCM에 따라 다른 것보다 더 많이 적용되거나 다른 형태로 적용되므로 여기에 해당됩니다.

  1. 빌드를 중단하지 마십시오. 컴파일하는 코드 만 확인하십시오.
  2. 체크인을 주석으로 처리하십시오 (SCM에서 해당 옵션을 제공하는 경우 체크 아웃 가능).
  3. 물건을 오랫동안 체크하지 마십시오.
  4. 자주 체크인하십시오 (가능한 경우 하루에 여러 번).
  5. 의미있는 라벨을 지정하십시오.
  6. 정기적으로 라벨을 붙입니다.
  7. 메인 지점에서 직접 작업하지 마십시오.
  8. 프로덕션에 대한 모든 릴리스에는 자체 레이블이 있어야하며 가능하면 기본 분기에서 읽기 전용 분기가 있어야합니다. 가능하면 UAT / Integration / Pre-production 테스트 릴리스에 대해서도 동일하게 수행하십시오.
  9. SCM의 내용과 레이블을 통해 프로덕션 환경의 내용을 정확하게 구축 할 수 있어야합니다.

참고 : 위의 항목 중 일부는 다소 분명해 보이지만 실제로 얼마나 많은 사람들이 실제로 주요 지점에서 작업하거나 생산을 변경 한 다음 수동으로 델타를 만들어 버전 제어를 직접 수행합니다. .. 및 레이블이 있습니다. 발효되지 않은 담즙처럼 달지 않은 겨드랑이 주스와 섞여서 ...


2

개인 점검 목록을 작성하십시오. 항목을 엉망으로 만들 때 비워 두십시오. 그것이 두 번째 성격이되면 목록에서 제거하십시오.

테스트를 실행하십시오. 그들이 통과하면 그것을 체크인하십시오. 당신이 엉망이고 어떤 것이 테스트를 통과하면 테스트를 작성하십시오.


1

우리는 다음을 수행합니다 ...

  1. 테스트-우리는 그것이 작동하는지 확인하고 싶습니다. 최소한 아무것도 깨지지 않는 것을 알고 싶습니다.

  2. 코드 검토 또는 최소한 친구 확인-지식이 널리 퍼지고 사람들이 최신 상태를 유지하도록하는 좋은 방법입니다. 또한 체크인하기 전에 버그를 잡는 데 도움이됩니다.

  3. 사전 통지 보내기-체크인 전에 사전 통지가 그룹으로 전송됩니다. 목적은 변경중인 파일 또는 영역을 다른 사람에게 알리는 것뿐만 아니라 변경 사항이 영향을 줄 것으로 예상되는 경우에 대비하여 미리 통지하도록해야합니다.

  4. 사전 통지를 보낸 후 몇 시간이 지나면 체크인이 수행되고 그룹에 이메일을 통해 알려줍니다. 그룹의 모든 사람은 버그 나 기능에 대한 특정 작업이 언제 완료되는지 알 수 있습니다.

  5. 체크인 통지의 사본은 버그 또는 기능과 연관된 수정 사항 레코드에 붙여 넣습니다. 레코드를 검색 할 때 수정 / 기능이 수반 된 내용을 이해하는 것이 매우 편리하다는 것을 알았습니다.



1

코드의 형식이 올바른지 확인하십시오 (예 : Java의 경우 : 코드를 선택하고 Eclipse에서 Ctrl-Shift-F를 누름). 그러나 전체 문서에 대해 동일한 작업을 수행하도록주의하십시오.


1

항상, 항상, 항상 , 변경 한 내용이 빌드를 손상시키지 않는지 확인하십시오. 사소한 것처럼 보일 수있는 특히 사소한 변경.

주말에 퇴근하기 직전에 아무런 문제가 없을 것이라고 생각했던 아주 작은 변화를 만들었을 때. 확실히, 그 작은 변화가 빌드를 깨뜨 렸고 우리 프로젝트에서 야간 테스트 실행이 실행되지 않았습니다. Q & A 책임자는 그것에 대해 너무 행복하지 않았습니다.


1

독립형 장치로 들어갈 수있는 변경 부분을 찾으십시오.

종종 코드를 수정하거나 개선 할 때까지 몇 가지 변경 사항이 있습니다. 그들 중 일부는 내가하려는 행동 변화에 따라 다릅니다. 다른 사람들은 내가 그 변화를 더 깨끗하게하기 위해 한 리팩토링입니다.

다음과 같이 자체 변경 설명을 사용하여 각 리팩토링을 개별적으로 확인하는 것이 좋습니다.

참고 : X의 이름을 Y로 바꿉니다.

X는 이전에 의미가 있었지만 이제는 Y 여야합니다. 이것은 문제 # 9의 작업과 관련이 있습니다.

그런 다음 각각의 좋은 리팩토링이 체크인되면 최종 동작 변경이 사소한 경우가 많습니다.

또한 일부 변경 사항은 많은 코드 줄에 영향을 주지만 그다지 흥미롭지는 않지만 다른 변경 사항은 현지화되었지만 중요한 영향을 미칩니다. 이러한 변경 사항을 함께 체크인하면 diff를 읽기가 어려울 수 있습니다. 그래서 나는 그것들을 따로 보관합니다.

나중에 누군가가 변화의 역사를 읽었을 때, 현재 상황에 어떻게 도달했는지, 왜 이런 방식인지는 분명합니다. 내 행동 변경 사항을 취소하는 것은 사소한 일입니다. 왜냐하면 수많은 다른 수정 사항과 얽매이지 않기 때문입니다.


0

빌린 물건을 다른 사람에게서 반환 할 때해야 할 일을하십시오. 깨끗하고 양호한 상태인지 확인하십시오. 엉망인 경우 코드를 소유자 (대부분의 경우 고용주)에게 반환하기 전에 청소해야합니다.


git은 공개적으로 커밋하기 전에 엉망을 청소하는 데 도움이됩니다. 불행하게도 중앙 집중식 VCS는 그렇지 않습니다.
Alex Budovski

0

나는 일을 위해 지역 hg 저장소를 유지합니다.

  • 내가 체크인 할 때마다 diff를 살펴보고 모든 변경 사항이 허용되는지 확인합니다.
  • 체크인의 주요 기능을 기록하려고합니다.
  • 각 커밋 크기를 하나의 주요 기능으로 유지하려고합니다.

나는 이것이 최고라고 주장하지는 않지만 그들은 나를 위해 일한다.


0

내가 체크인하도록되어 있지 않은 코드를 작성할 때 "// TEMP :"를 포함하기 전에 "// END TEMP"를 포함하는 줄을 추가합니다. 이것은 체크인하기 전에 diff를 수행하는 것과 함께 실수로 해당 코드를 체크인하지 않을 것이라고 약속합니다.


0

추가하거나 변경 한 모든 내용을 철저히 테스트하십시오. 시도 할 수있는 모든 가능한 경우를 시도하십시오. 품질 관리팀에 테스트를 두지 마십시오. 매번 샌드위치를 ​​먹었을 때 약간의 변경을 한 다음 안전한 경우에 대비하여 테스트 사례를 시도하고 즉시 문제를 발견하면 샌드위치가 많이 생겼습니다. 나는 보통 나 자신에게 큰소리로 말한다.

변경 후 UI가 이상해 졌다고합니다. 체크인하기 전에 프로그램을 실행하고 UI를 살펴본 경우 문제가 발생 했습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.