중요하지 않은 오타를 해결하기 위해 커밋하는 것이 가치가 있습니까?


67

코드에서 중요하지 않은 오타를 발견하면 (예 : print (error) 문에서 잘못된 아포스트로피) 해당 오류를 해결하기 위해 노력할 가치가 있습니까? 아니면 단순히 혼자 두어야합니까?

특히, 나는 중요하지 않은 오타를 해결하는 가치와 커밋 로그의 합산을 측정하는 것이 궁금합니다. 나는 그들을 해결하기 위해 기울고 있습니다. 내가 현혹되고 있습니까?


40
사소한 커밋으로 인해 문제가 발생하면 더 나은 VCS, 더 나은 로그 필터링 도구 또는 서로 다른 심각도의 수정을 알리는 더 나은 방법에 투자해야합니다.
Rex Kerr

@ root45 결과를 보면,이 질문에서 요구하는 것과는 다른 문법입니다.
이즈 카타

답변:


130

저의 개인적인 느낌은 품질을 향상시키는 것이 커밋 로그 항목을 조금만 추가해도 약간의 불편 함이 있다는 것입니다. 결국, 깨진 창 효과 를 고려할 때 작은 개선 사항이 많이 계산됩니다 .

TRIVIAL:태그 에 접두사 를 붙이거나 VCS가 지원하는 경우 사소한 것으로 표시 할 수 있습니다.


72
이것에 덧붙이고 싶은 것은 이것과 비슷한 것들이 다른 무언가에 집중되어있는 것보다 별도로 커밋된다는 것입니다. 일괄 처리의 문제점은 너무 많은 노이즈가 관련 변경 사항에서 코드 검토자를 방해 할 수 있다는 것입니다. +1
Andy

9
깨진 창 효과를 언급하면 ​​+1입니다. 작은 일이 중요합니다. 모든 것이 정말로 깨끗하다면 사람들은 부주의하게 작성되거나 테스트되지 않은 코드를 커밋하기 전에 두 번 생각할 것입니다.
Roy Tinker

25
또한 지형지 ​​물로 묶어 놓으면 지형지 물을 롤백하여 변경 사항을 풉니 다. 한 번에 하나씩 커밋하십시오.
ctrl-alt-delor

4
어떤 VCS가 주석을 사소한 것으로 표시 할 수 있는지에 관심이 있습니다. 나는 SVN, Hg 및 Git과 함께 일했으며 그 어느 것도 눈치 채지 못했습니다.
Xion

3
@Andy 그 소음은 최악의 부분이 아닙니다 ... 누군가 나중에 그 기능을 원하지 않기 때문에이 커밋을 되돌리려 고 결정하면 갑자기 커밋의 일부였던 작은 개선 사항도 잃게됩니다.
rFactor

49

당신은 농민이 아니며 개별적으로 해결하는 것이 좋습니다. 변경 사항이 많을수록 더 좋습니다. 충돌하는 버그 수정이 500 개의 댓글 / 오타 변경 사항과 혼합되는 것을 원하지 않습니다.


9
+1 각 수정본은 하나의 특정 수정에만 관련되어야합니다. 각 개정판에 실제 변경 사항 사이에 고정 된 임의의 오타가있는 경우 수정 사항을 백 포트하는 것이 NIGHTMARE가됩니다.
Grant

28

일반적인 경우 : 예

그건 항상 가치는 유지 보수성 증가하는 소프트웨어의합니다.

그냥 가세요

릴리스를 출시하려는 경우 ...

... 그리고 팀장이 아닌 경우 그에게 확인하십시오 .


커밋 로그의 내용과 관련하여 ...

나는 고립 된 오타를 고치는 것에 관한 것이라면 최소한 "기능"관련 커밋과 구별되는 것을 작성해야한다는 것에 동의합니다.

일반적인 관행은 이슈 트래커에 끊임없이 변하지 않는 작업을 수행하여 영원한 변화와 끝없는 변화를 추적하는 것입니다. 예를 들어, 다음과 같은 작업을 수행하는 것은 드문 일이 아닙니다.

  • 대규모 자동 무해한 정리 (공백 스윕)
  • 문법과 오타 사냥 행위,
  • 시스템 수정 빌드
  • 기타...

사람들이 올바르게 문서화 된 티켓을 만드는 것에 대해 게으른 경우에 대한 것만으로도 타스크 ID로 사용되지 않도록주의하십시오. 특히 ID에 연결되지 않은 커밋을 거부하면 (이것은 좋지만 이와 같은 큰 작업은 게으른 개발자에게 더 매력적입니다).


7
오타 수정에 대해 팀 리더와 확인 중입니까? 다가오는 릴리스를 강조한 팀 리더라면 그런 사소한 일로 방해 받고 싶지 않을 것입니다.
Joh

2
@Joh : 반드시 빌드를 중단 할 필요는 없지만 다른 빌드 작업이 있거나 이미 태그가 지정되어 사용할 준비가되었을 수 있으며 감사 제어 (업종에 따라 다름)로 인해이 무해한 커밋을 묶을 수 있습니다 작업과 요구 사항에 따라, 아무데도 나오지 않으면 약간의 두통 일 수 있습니다. 출시 후 며칠 동안 쉽게 저장할 수 있습니다. 그러나 일반적으로, 나는 당신에게 동의 할 것이고, 심지어 그런 회사가 잘못하고 있다고 말할 것입니다. 그러나 당신은 그것을 고칠 사람이 아니므로 수석이 아닌 경우 그들에게 그것을 실행하십시오.
haylem

2
@Joh : 기본적으로 팀장이 새 빌드를 시작하려고 할 때 (또는 이미 시작했을 때) 새 빌드가 빌드 시스템에서 갑자기 점프하는 것을 본 경우이 접근 방식을 사용하여 스트레스 수준을 높일 수 있습니다. 또한 ...
haylem

7

오타는 커밋으로 추가해야합니다. 철자가 틀린 단어 나 문법 오류를 수정하면 코드의 가독성이 향상됩니다.

"고정 오타"또는 "file.c의 고정 오타"와 같은 커밋 메시지를 사용하면 이러한 커밋을 다른 주요 코드 커밋과 구별 할 수 있습니다.


7

예, 특히 프로젝트 초기에이를 수행해야합니다.

왜? 두 가지 점 :

  1. 오타가 너무 늦을 때까지 오타가 "중요한"것인지 아닌지를 모를 것입니다. 모두가 큰 문제는 아니라고 생각하기 때문에 일부 수정 프로그램은 수정되지 않을 수 있습니다. 그 때까지

  2. 수백 줄의 코드 / 함수 호출을 한 후 수정하는 것보다 오타를 조기에 고의적으로 수정하는 것이 훨씬 쉽습니다. 다시 말하지만 임시 해킹은 놀랍도록 빠르게 반영구적으로 반영 될 수 있습니다. 이것이 "CollapseAll"및 "ColapseAll"메소드가 모두있는 오브젝트를 처리해야하는 이유입니다.


2
예-모든 정답 중에서 "언제"에 의존한다고 언급하는 것이 가장 좋습니다.
Sanko Wonko

4

최종 사용자가 볼 수있는 문법 오류의 경우 예, 사용자 또는 QA가 오류를보고하여보고 할 수 있으므로 추적해야 할 수 있으므로 커밋을 수행하는 것이 좋습니다. 이미 수정 된 경우 문제를 해결하는 데 시간이 더 걸릴 수 있습니다.

그래도 코드 주위의 주석에서 문법 오류 인 경우 실제 코드 변경의 일부가 아니며 코드 문서를 업데이트하는 경우가 아니라면 아무것도하지 않습니다.


3

커밋 로그를 정리하는 것이 걱정된다면 다른 일을하고있는 것입니다. :-) 빈번한 커밋은 좋은 것입니다! 나는 항상 오타 수정을 저지른다. 최대한 빨리 코드베이스에 참여하여 개발주기를 단축하십시오!


2
I commit typo fixes all the time걱정되는 IMO, 영어 실력이 좋은 프로그래머를 찾으세요?
Lie Ryan

요즘 내가 얻을 수있는 것을 가져 가라. 실행 가능한 코드를 작성할 수있는 프로그래머를 찾는 것은 심각한 문제입니다!
Brian Knoblauch

2

나는 찬성 투표합니다. 나는 사람들이 물건을 체크인하는 것을 싫어하는 회사에서 일했습니다. 거의 모든 것을 의미합니다. 코드 리뷰는 광범위했기 때문에 오타가 수정 된 변경 사항을 체크인하면 신음합니다. 코드의 상태를 상상할 수 있습니다. 실제로 코드는 끔찍하지는 않았지만 와인처럼 흐르기보다는 기적처럼 들렸습니다.


0

변경 관리 프로세스에서 허용합니까?

내 환경에서 내가 한 모든 커밋은 비즈니스 사용자 또는 필수 시스템 수준 변경에 의해 요청 된 변경 요청에 다시 연결되어야하며 해당 최종 사용자 테스트 프로세스가 완료됩니다. 설명하는 것과 같은 간단한 오타는 아마도 그 중 어느 것으로도 기록되지 않았을 것입니다 (아무도 모르게 4 년 넘게 존재했던 내 앱 중 하나에서 오타 및 문법 오류를 발견했습니다). 전화하기 자신을 설명하기가 매우 어려울 것입니다.

"실제"변경이 필요할 때 한동안 설명하고있는 것처럼 변경 사항을 저장하고 (실제로 메소드 이름의 철자가 틀렸고 방금 발견했습니다) 변경 사항을 저장합니다. "다양한 오타 수정"을 로그에 넣습니다.


+1 일부 환경에서는 이것이 사실입니다. 작업하는 곳이 사실이 아니기 때문에 공감하지 마십시오.
MarkJ

-1 변경 관리 프로세스가 큰 시간을 소모하는 것 같습니다 . 모든 커밋이 변경 요청과 관련되어야한다는 것을 이해하고 심지어 선호 합니다. 프로세스 의이 부분은 괜찮습니다. 그러나 OMG는 개발자가 시작한 요청 (이 리팩토링 / 수정 오타와 같은 )이 금지되어있어 큰 붉은 깃발 을 내고 있습니다. 비즈니스 사용자 / 감사인 이 개발자보다 항상 더 잘 알고 있다고 가정합니다. 만약 그것이 진실에 가까워지면 코드를 직접 작성할 것입니다.
gnat

개발자가 승인 할 사람에게 가치있는 변경 사항을 적용하도록 설득 할 수 있다면 앞으로 나아갈 수 있습니다. 그러나 메소드 이름에서 간단한 오타를 찾거나 복사 / 붙여 넣은 코드를 메소드로 리팩토링 해야하는 코드를 찾으면 권한이 없으면 변경할 수 없습니다. 단순히 "코드를 사용하여 올바른 일을하는 것"에 대한 것이 아닙니다. 승인 테스트를 수행해야하며 개발자가 비즈니스 사람들에게 말할 수있는 위치에 있지 않습니다. "이 변경을 수행하면 하지만 테스트주기를 거쳐야합니다. "
alroc

@alroc은 "만약 확신 할 수 있다면"합리적으로 보이는 표면 아래에서 비생산적인 프로세스를 숨 깁니다. 큰 변화, 합의 된 마일스톤 체크 포인트 / 릴리즈 등에 대한 비즈니스 / 감사 요구는 합리적입니다. 일주일의 개발자와 QA가 걸리는 노력을 정당화하기 위해 몇 시간 / 일을 소비하는 것은 지루하지만 공정합니다. 그러나 모든 단일 철자 수정 또는 추출 방법에 대해 이것을 강제하는 것은 ... 나에게 휴식을 제공-이것은 잘못된 시간에 잘못된 단계에서
무의식적으로

다시 설명해 드리겠습니다. 승인 된 다른 변경 작업을 수행하는 동안 오타를 수정하거나 분석법을 추출 할 수 있다면 다른 사람을 팔지 않고도 실수를 할 수 있습니다. 그러나 사용자가 볼 수없는 변경 사항을 만들 수 없으며 먼저 비즈니스에 영향을 미치지 않으면 서 비즈니스 / 사용자에게 직접적인 긍정적 인 영향을 미치지 않습니다.
alroc

-1

DVCS를 사용하여 기록 편집

클린 커밋 히스토리에 대해 걱정이되면 기능 브랜치 에서 주요 작업을 수행하십시오 . 분산 VCS 로 작업하는 경우 커밋 히스토리를 메인 브랜치로 푸시하기 전에 커밋 히스토리를 쉽게 편집 할 수 있습니다. SVN을 사용하는 경우 Git을 사용해보십시오. Subversion과 양방향 으로 상호 작용할 수 있으며 실제로 Subversion을 커밋하기 전에 기록을 편집 할 수도 있습니다.

그렇지 않으면 상식을 유지하십시오

커밋 히스토리를 원하지 않거나 편집 할 수 없는 경우 자동 테스트 또는 컴파일에 영향을 미치지 않는 작은 오타에 대해 조기 또는 원자 적 커밋을 수행하는 기능적인 이유는 없습니다 . 이 경우 커밋 기록을 깨끗하게 유지하는 것이 실제로 원자 커밋을 수행하는 것보다 중요합니다. 하나 또는 두 개의 오타 수정과 "일반"수정을 혼합 해도 잠재적 인 검토 프로세스에는 영향을 미치지 않습니다. 그러나 더 큰 코딩 세션 후에 "정리"할 때 몇 가지 사소한 수정 사항을 하나의 커밋으로 그룹화 할 수 있습니다.

그 주 기능 버그 여전히 원자 커밋에 최대한 빨리 최선을 다하고되어야한다.

여기에 대한 답변의 일반적인 어조는 사소한 오타에도 "모든 것을 빨리 커밋"하는 전략을 제안하는 것 같습니다. 나는 의견에 동의하지 않고 토론을 환영합니다.

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