2009-06-19 5 views

답변

17

당신은 신성한 전쟁터를 ​​만지고 있습니다. 사람들의 서식을 모으는 일은 갈퀴와 횃불을 요구하고 있습니다.

내 추천 : Do not.

당신이 C#을 말하고 개발자가 Visual Studio를 사용하고 있다면, VS에는 많은 자동 서식 도구가 있습니다. 닫는 중괄호와 대/소문자를 입력하면 코드를 자동 서식을 지정할 수 있습니다.

더 나은 해결책은 모든 개발자가 동일한 자동 서식 설정을 사용하도록하는 것입니다.

도구 -> 옵션, 텍스트 편집기 -> C# -> 포맷

당신은 VS에서 동일한 코드 포맷 설정을 사용하는 것에 동의 할 수있는 팀을 얻을 수 있습니다, 그래서 만약 이러한 설정은 내보낼 수 있습니다, 소스 컨트롤 시스템에서 수행하는 문제를 피할 수 있습니다.

이런 일을 할 때 지옥에 빠지면 다른 사람들처럼 사전 커밋 훅 (pre-commit hook)을 사용하는 것이 좋습니다. SVN 서버가 Windows에서 실행중인 경우 후크 스크립트를 작성하는 데 CaptainHook을 권장 할 수 있습니까? 모든 .NET 언어로 작성할 수있는 플러그인 가능 훅 스크립트.

+5

완전히 동의합니다 - 저장소에 코드 형식 옵션을 확인한 다음 모든 사람이 공유 할 수 있습니다. –

+1

와우. 방금 언급했기 전까지는 프로젝트에 내 보낸 VS 서식 설정을 소스 제어에 포함시키지 않았습니다. 좋은 생각이야. – Yoopergeek

+0

캡틴 훅 (CaptainHook)의 경우 패치 파일을 가지고 두 개의 버그를 수정하십시오. –

6

나는 당신이 당신의 저장소에이 사용 a pre-commit hook을 할 수 있다고 생각합니다.

편집 나쁜 생각이라고 생각하는 사람들에게 (나는 그렇지 않다는 말은 아닙니다) : 조직에서 특정 코드 스타일이나 코드 서식을 시행하는 것은 흔한 일입니다. 때로는 이러한 규칙이 매우 유창하고 엄격하게 적용될 수 있으며, 일반적으로 인간 행동 (예 : 저장소에 무엇인가 커밋하기 전에 올바른 스타일로 서식 지정)과 관련된 인간 행동이지만 프로세스 자동화는 때로는 유용 할 수 있습니다.

다른 방법으로는 커밋 전에 자동으로 확인을 수행 할 수 있지만 확인이 실패하더라도 커밋을 허용하지만 전자 메일이나 누군가 다른 사람이 스타일.

3

가능하지만 아주 나쁜 생각입니다.

자동 코드 포맷터가 완벽하지 않으므로 사람들이 틱 할 수 있다고 거의 보장 할 수 있습니다.

그렇다면 미리 커밋 된 후크를 사용해보십시오.

SVN 서버가 Windows 또는 Linux 시스템에서 실행되고 있습니까? 그리고 어떤 코드 포맷터를 사용하고 싶습니까?

+0

나는 NArrange (http://www.narrange.net)을보고있다 – SuperSuperDev1234

+0

그래, 나에게도 좋은 생각처럼 들리지 않는다. 코더 측의 일부 원칙은 깨진 코드보다 훨씬 안전합니다. – crashmstr

+0

그런 경우에는별로 도움이되지 않습니다 ... Windows에서의 Subversion에 대해 많이 알지 못합니다. 그러나 Yoonpergeek이 당신을 덮어 두었던 것처럼 보입니다. 어쨌든, 고려해야 할 한 가지 점은 후크를 추가하는 대신 devs가 코드를 쉽게 포맷 할 수 있도록 스크립트를 작성하는 것입니다. 그런 다음 추한 코드가 체크인되면 정중하게 도구 사용을 요청할 수 있습니다. –

27

사전 커밋 (pre-commit) 훅 스크립트를 사용하면 가능합니다. 하지만 큰 문제가 생길 수 있기 때문에 첫 번째 커밋 후에 스크립트를 제거해야합니다.

커밋 된 데이터를 수정하면 클라이언트는이를 알지 못합니다. 따라서 스크립트가 파일의 형식을 수정하는 커밋 후에 저장소의 파일 내용은 작업 복사본의 파일과 다릅니다. 그러나 당신의 작업 카피는 여전히 저장소와 함께 최신이라고 생각한다. (어쨌든 수정은 막 저지른 것이다.)

그래서 다음 업데이트에, 당신은 지옥에 얻을 것이다 - 깨진 작업 복사본, 화가 사용자를 ...

그리고 물론

, 당신은 빌드를 깰 수 - 자동 서식은 가끔 효과가 있습니다.

물론 이 올바른 서식 지정을 위해을 확인하고 오류가없는 경우 훅 스크립트를 구현하여 완벽하게 정상적으로 작동합니다.

TortoiseSVN을 사용하고 있으므로 client-side pre-commit hook에서 서식을 사용해 볼 수 있습니다.

+2

이것이 최선의 이유입니다 ** repo <-> working-copy inconsistency. 아주 좋은 지적입니다. – Yoopergeek

+1

충돌/부실 작업 복사본 문제는 다른 사람이 파일의 새 버전을 저장소에 커밋 한 경우와 다를 바가 없습니다. 이것은 서버에서 최신 버전을 가져옴으로써 해결되며, 사용자가 잊어 버리면 svn 클라이언트가 파일을 다시 커밋하려고 시도 할 때이를 감지합니다. –

+0

Stefan이 말한대로, 문제는 커밋에 의해 미리 커밋 된 코드가 코드를 변경 했으므로 커밋 한 후 커밋 한 후 커밋을 즉시 업데이트해야한다는 것입니다. – Yoopergeek

6

대부분의 사람들이 여기 있습니다. 코드를 다시 작성하는 사전 커밋 후크를 추가하는 것에 동의합니다. 그러나 코딩 규칙에 맞지 않는 코드를 거부하고 사용자에게 알리는 사전 커밋 훅을 사용할 수는 있습니다. 오류.

4

좋습니다.

사전 커밋 스크립트를 사용하거나 더 나은 방법으로 IDE에서 자동으로 수행하는 방법을 찾습니다 (사전 커밋은 변경된 파일을 클라이언트로 푸시). Eclipse는 저장시 자동 포맷이 가능합니다.

개발자가 다른 형식으로 서식을 지정하면 커밋이 서식 변경 일 뿐이므로 혼란을 야기 할 수있는 파일을 찾을 수 있습니다.

일반적인 서식 지정 패턴은 매우 좋습니다. 소개하기가 어려울 지 모르지만 그만한 가치가있을 것입니다. 모든 변경 사항은 서식 변경뿐 아니라 실제 변경 사항입니다. 내 경험에 의하면 개발자는 이점을보고 받아 들일 것입니다.

저는 cvs와 java로 작업했고 jalopy를 자동 포맷으로 사용했습니다. 우리는 분기 시스템을 사용하여 의무적이었고 매우 잘 작동했습니다.