programing

git commit 메시지에서 과거 시제를 사용해야 합니까, 아니면 현재 시제를 사용해야 합니까?

closeapi 2023. 4. 11. 22:03
반응형

git commit 메시지에서 과거 시제를 사용해야 합니까, 아니면 현재 시제를 사용해야 합니까?

git commit 메시지는 필수 현재 시제여야 한다는 것을 읽은 이 있습니다.예를 들어 "Add tests for x" 입니다.저는 항상 과거 시제(예: "X에 대한 테스트 추가")를 사용하고 있는데, 이것은 훨씬 더 자연스럽게 느껴집니다.

다음은 가지를 하나의 메시지로 보여주는 최근 John Resig의 커밋입니다.

조작 테스트에서 jQuery 세트 결과를 추가로 조정합니다.예상되는 테스트 결과의 순서도 고정.

그게 중요한가요?어떤 걸로 할까요?

현재 시점의 명령형 커밋 메시지에 대한 선호는 Git 자체에서 비롯됩니다.Git repo의 Documentation/SubmitingPatches에서 다음을 수행합니다.

예를 들어 "이 패치는 xyzzy do froz" 또는 "I] changed xyzy to do froz" 대신 "make xyzzy do froz"와 같은 명령적 기분 변화를 코드베이스에 명령하는 것처럼 설명하십시오.

Git 커밋 메시지들이 그 스타일로 많이 쓰여져 있는 것을 볼 수 있을 것입니다.팀이나 오픈 소스 소프트웨어에서 작업하는 경우 모두가 일관성을 유지하기 위해 해당 스타일을 고수하는 것이 좋습니다.만약 당신이 개인 프로젝트를 하고 있고, 당신의 git 이력을 볼 수 있는 유일한 사람이더라도, 그것이 당신이 다른 사람들과 함께 일할 때 감사할 좋은 습관을 형성하기 때문에 명령적인 분위기를 사용하는 것은 도움이 된다.

프로젝트에서는 거의 항상 과거형을 사용해야 합니다.어떤 경우에도 프로젝트는 일관성과 명확성을 위해 항상 같은 시제를 사용해야 합니다.

나는 현재형을 사용하자고 주장하는 다른 주장들 중 몇 가지는 이해하지만, 그것들은 대개 적용되지 않는다.다음 글머리 기호들은 현재 시제로 글을 쓸 때 흔히 볼 수 있는 주장이고, 나의 답변이다.

  • 현재 시제로 글을 쓰는 것은 당신이 무엇을 했는지가 아니라 다른 사람에게 그 약속을 적용하는 것이 무엇을 할 것인지를 말해준다.

이것이 올바른 프로젝트 스타일에서만 현재 시제를 사용하고자 하는 가장 올바른 이유입니다.이러한 사고방식은 모든 커밋을 옵션적인 개선사항 또는 기능으로 간주하며, 사용자는 특정 저장소에서 어떤 커밋을 유지하고 어떤 커밋을 거부할지를 자유롭게 결정할 수 있습니다.

이 주장은 실제로 분산된 프로젝트를 처리하는 경우에 유효합니다.분산 프로젝트를 다루고 있는 경우 오픈 소스 프로젝트를 수행하고 있을 수 있습니다.그리고 실제로 배포된다면 매우 큰 프로젝트일 것입니다.사실 Linux 커널 또는 Git 중 하나일 것입니다.Linux가 Git의 보급과 인기를 가져온 원인일 가능성이 높기 때문에, 왜 사람들이 Git의 스타일을 권위라고 생각하는지는 이해하기 쉽다.네, 그 두 가지 프로젝트에서는 스타일이 말이 돼요.또는 일반적으로 대규모 오픈 소스 분산 프로젝트에서 작동합니다.

단, 소스 컨트롤의 대부분의 프로젝트는 이와 같이 동작하지 않습니다.일반적으로 대부분의 리포지토리에 대해 올바르지 않습니다.이것은 커밋에 대한 현대적인 사고방식입니다.SVN(서브버전) 및 CVS 저장소에서는 이러한 유형의 저장소 체크인을 거의 지원할 수 없습니다.일반적으로 통합 브랜치는 잘못된 체크인을 필터링하는 작업을 처리했지만 일반적으로 이러한 기능은 "옵션" 또는 "가져두기 좋은 기능"으로 간주되지 않았습니다.

대부분의 시나리오에서 소스 리포지토리에 커밋을 할 때 향후 다른 사용자가 변경 이유를 쉽게 이해할 수 있도록 이 업데이트에서 변경된 내용을 설명하는 저널 항목을 작성합니다.이 변경은 일반적으로 선택사항이 아닙니다.프로젝트 내 다른 담당자는 이 변경을 병합하거나 기본 설정을 변경해야 합니다.'사랑하는 일기장, 오늘 한 소년을 만났는데 가 나에게 인사를 한다'는 식의 일기를 쓰는 것이 아니라, '나는 한 소년을 만났는데 그가 에게 인사를 했다'고 쓰는 것이다.

마지막으로 이러한 분산되지 않은 프로젝트의 경우 커밋 메시지를 읽는 시간의 99.99%가 이력 읽기입니다.이력은 과거 시제로 읽힙니다.0.01%는 이 커밋을 적용할 것인지, 아니면 브랜치/리포지토리에 통합할 것인지를 결정합니다.

  • 일관성.많은 프로젝트(git 자체를 포함)에서 그렇게 되어 있습니다.또한 커밋을 생성하는 git 툴(git merge나 git revert 등)도 이를 수행합니다.

아니요, 버전 관리 시스템에 기록된 프로젝트의 대부분은 과거 시제로 되어 있습니다(참조 자료는 없지만 Git 이후 현재 시제의 주장이 새로운 것을 고려하면 아마 맞을 것입니다)."수정" 메시지 또는 현재 시제의 커밋 메시지는 실제로 분산된 프로젝트에서만 의미가 생기기 시작했습니다. 위의 첫 번째 포인트를 참조하십시오.

  • 사람들은 역사를 읽고 "이 코드베이스에 무슨 일이 일어났는지"뿐만 아니라 "이 커밋을 선택했을 때 어떻게 되는지" 또는 "이 커밋으로 인해 향후 합병될 수도 있고 아닐 수도 있기 때문에 코드베이스에 어떤 새로운 일이 일어날지"와 같은 질문에 답합니다.

첫 번째 포인트를 보세요.사람이 커밋 메시지를 읽는 시간의 99.99%는 역사를 읽기 위한 것입니다.역사는 과거 시제로 읽힙니다.0.01%는 이 커밋을 적용해야 할지, 아니면 브랜치/저장소로 통합해야 할지 결정합니다.99.99%는 0.01%보다 뛰어납니다.

  • 보통 더 짧아요.

나는 길이가 짧기 때문에 부적절한 시제/문법을 사용하라는 좋은 주장을 본 적이 없다.표준 50자 메시지에 대해 평균 3자만 저장할 수 있습니다.그렇다 치더라도 현재 시제는 평균적으로 몇 글자 짧을 것이다.

  • 발행/특징 추적기의 티켓 제목과 더 일관되게 커밋 이름을 지정할 수 있습니다(과거 시제를 사용하지 않음, 때로는 미래에도 사용됨).

티켓은 현재 발생하고 있는 것(예를 들어, 이 버튼을 클릭하면 앱이 잘못된 동작을 나타내고 있는 것) 또는 앞으로 해야 할 것(예를 들어 텍스트가 편집자의 리뷰가 필요함)으로 기재되어 있습니다.

이력(예: 커밋 메시지)은 과거에 수행된 것으로 작성됩니다(: 문제가 해결되었습니다).

나는 365git에 더 자세한 설명을 썼다.

명령형 현재 시제의 사용은 익숙해지는 데 조금 시간이 걸린다.내가 그것을 언급하기 시작했을 때, 그것은 반발에 부딪혔다.보통 "커밋 메시지는 내가 한 일을 기록합니다."와 같이 합니다.그러나 Git은 여러 곳에서 변경을 받을 수 있는 분산 버전 관리 시스템입니다.커밋을 적용하기 위한 지시사항으로 이 메시지를 작성하기 보다는 커밋을 적용하기 위한 지시사항으로 간주하십시오.제목으로 커밋하는 대신:

Renamed the iVars and removed the common prefix.

이런 거 하나 먹어봐.

Rename the iVars to remove the common prefix

그 말은 당신이 한 일보다는 헌신을 적용하면 어떤 일을 할 지 말해주는 거죠또한 저장소 이력을 보면 Git에서 생성된 메시지도 이 시제로 작성되어 있음을 알 수 있습니다.- "Merge"가 아닌 "Merge", "Rebased"가 아닌 "Rebased"로 작성되므로 일관성이 유지됩니다.처음에는 이상한 느낌이 들지만, 이치에 맞고(응용하면 증명이 가능) 자연스러워집니다.

이 모든 것을 말했지만, 그것은 당신의 코드이며, 당신의 저장소입니다.자신의 가이드라인을 설정하고, 그것을 준수합니다.

만약 이로 결정한다면, 당신은 이 길을 택할 것입니다.git rebase -i알아보는 것도 좋을 것 같아요

현재 시제의 명령어를 고수하는 이유는

  • 기준이 있는 것은 좋다
  • 버그 트래커의 티켓과 일치합니다.버그 트래커의 티켓은 자연스럽게 "뭔가를 수정", "수정" 또는 "뭔가를 테스트" 형식으로 되어 있습니다.

누구를 위해 메시지를 쓰고 있나요?또, 통상은, 독자가 메시지를 읽는 것은 소유 전입니까, 아니면 소유 후입니까?

이 두 가지 관점 모두에서 좋은 답변을 얻었다고 생각합니다. 모든 프로젝트에 대해 최적의 답변을 제시하기에는 다소 부족할 수 있습니다.분할투표는 그만큼 시사할 수 있다.

즉, 요약:

  • 메시지는 주로 다른 사람을 대상으로 하며, 일반적으로 변경 전 어느 시점에 읽습니다.변경 내용에 대한 제안은 기존 코드에 적용됩니다.

  • 메시지는 주로 자기 자신(또는 팀원)에 대한 저널/레코드이지만, 일반적으로 변경 사항을 가정한 관점에서 읽고 무슨 일이 일어났는지 다시 검색합니다.

어느 쪽이든 이것이 팀/프로젝트에 동기를 부여할 수 있습니다.

그게 중요한가요?일반적으로 사람들은 메시지를 올바르게 해석할 수 있을 만큼 충분히 똑똑합니다. 그렇지 않다면 어쨌든 저장소에 접근하지 못하게 해야 할 것입니다.

너한테 달렸어.원하는 대로 커밋 메시지를 사용하십시오.하지만 당신이 시간과 언어를 바꾸지 않는다면 더 쉬울 것이다.

팀워크로 발전하는 경우에는 논의하여 수정해야 합니다.

언급URL : https://stackoverflow.com/questions/3580013/should-i-use-past-or-present-tense-in-git-commit-messages

반응형