version-control - with - 유니티 git svn




버전 관리에서 무엇을 넣어야합니까? (6)

나는 개발자가 IDE를 통해 자동으로 생성되거나 도구를 빌드 할 수있는 것을 무시하고 (예 : Maven의 Eclipse 플러그인은 .project 및 .classpath를 생성하므로 개발자가 신속하게 시작할 수있는 버전 제어하에 놓는 것이 가장 좋습니다) ). 특히 자주 변경되거나 사용자 환경 설정 만 포함하거나 IDE 사이에서 충돌하는 파일은 피하십시오 (예 : Eclipse와 마찬가지로 .project를 사용하는 다른 IDE).

Eclipse 사용자의 경우 일관되게 형식이 지정된 코드를 얻으려면 코드 스타일 (.settings / org.eclipse.jdt.core.prefs - 저장을 자동 서식 지정)을 추가하는 것이 특히 편리합니다.

거의 모든 IDE는 개발중인 응용 프로그램과 아무 관련이없는 파일을 많이 만듭니다. IDE에서 생성 및 유지하므로 버전 제어 저장소가있는 응용 프로그램을 빌드하는 방법을 알고 있습니다.

이 파일들은 실제로 응용 프로그램 (소스 코드, 응용 프로그램 구성 파일 등)과 관련이있는 파일과 함께 버전 제어하에 있어야합니까?

문제는 다음과 같습니다. 일부 IDE의 경우 새 프로젝트를 만든 다음 IDE에 포함 된 버전 제어 클라이언트 / 명령을 사용하여 버전 제어 리포지토리로 가져 오는 경우 모든 파일이 리스폰에 전송됩니다. 그리고 맞습니다. 같은 프로젝트에서 일하는 두 명의 개발자가 서로 다른 IDE를 사용하고 싶습니다.

특정 IDE, 프로그래밍 언어 또는 버전 제어 시스템에 대한 참조를 피 하면서이 질문에 대해 불가지론 을 지키고 싶습니다. 따라서이 질문은 다음과 정확히 동일하지 않습니다.


내가 버전 관리에서 봤던 것에서 볼 때, 대부분의 것들이 소스 코드와 같이 들어가야한다. 그러나 많은 VCS가 실행되는 문제는 대용량 파일, 일반적으로 바이너리를 처리하려고 할 때이고 때로는 오디오 및 그래픽 파일과 같은 것을 처리하려고 할 때입니다. 따라서 개인적인 방법은 소스 코드를 일반적인 소형 그래픽과 함께 버전 제어하에두고 다른 바이너리를 다른 관리 시스템에 남겨 두는 것입니다. IDE의 빌드 시스템을 사용하여 만든 바이너리의 경우 모든 빌드를 다시 생성해야하기 때문에이를 무시할 수 있습니다. 의존성 라이브러리의 경우 의존성 패키지 관리자가있는 곳입니다.

IDE 생성 파일 (Visual Studio 용 솔루션 파일과 같은 빌드 프로세스 중에 생성되지 않은 파일이라고 가정 함)의 경우 - 음, 혼자 작업하는지 여부에 달려 있다고 생각합니다. 혼자 일하는 경우 계속해서 추가하십시오. 솔루션의 설정 또는 다른 설정을 되돌릴 수 있습니다. 동일한 비 - 솔루션과 같은 파일도 마찬가지입니다. 그러나 공동 작업을하는 경우 내 권장 사항은 없습니다. 대부분의 IDE 생성 파일은 사용자 별 특성을 갖는 경향이 있습니다. 일명 사용자의 컴퓨터에서 작동하지만 다른 사람에게는 필요하지 않습니다. 따라서이 경우 IDE 생성 파일을 포함하지 않는 것이 좋습니다.

tl; dr 은 프로그램과 관련된 대부분의 것들을 버전 관리에 넣어야하며 종속성은 제외됩니다 (라이브러리, 그래픽 및 오디오는 다른 종속 관리 시스템에서 처리해야합니다). IDE에 의해 직접 생성되는 것들에 관해서는, 당신이 홀로 또는 다른 사람들과 일할 때 의존 할 것입니다.


엄지 손가락 규칙 :

  1. 빌드 결과 (컴파일러 옵션, 파일 인코딩, ASCII / 바이너리 설정 등)에 영향을주는 모든 것을 포함하십시오.
  2. 깨끗한 계산대에서 프로젝트를 열 수있게하고 모든 수동 개입없이 컴파일 / 실행 / 테스트 / 디버그 / 배포가 가능하도록 모든 것을 포함하십시오.
  3. 절대 경로가 포함 된 파일을 포함하지 마십시오.
  4. 개인적인 취향 (탭 크기, 색상, 창 위치)을 포함하지 마십시오.

이 순서대로 규칙을 따르십시오.

[업데이트] 생성 된 코드에서 어떤 일이 일어나야하는지 항상 의문이 있습니다. 엄지 손가락의 규칙으로, 나는 항상 버전 제어하에 있습니다. 언제나 그렇듯이, 소금 한 알로이 규칙을 지키십시오.

내 이유 :

버전 생성 코드는 시간 낭비처럼 보입니다. 그것은 바로 생성? 나는 그것을 버튼을 눌러 다시 얻을 수있다!

정말?

총알을 물지 말고 이전 버전의 정확한 버전을 확실하게 생성해야한다면 얼마나 많은 노력이 필요할까요? 코드를 생성 할 때 모든 입력 파일을 올바르게 가져야 할뿐만 아니라 코드 생성기 자체의 시간을 되돌려 야합니다. 그럴 수있어? 항상? 버전 관리하에 놓은 경우 생성 된 코드의 특정 버전을 체크 아웃하는 것만 큼 쉽습니까?

그리고 당신이 할 수 있다고하더라도, 뭔가를 놓치지 않았 음을 확신 할 수 있습니까?

따라서 한 손으로 생성 된 코드를 버전 제어하에 두는 것은 의미가 있습니다. VCS가 의미하는 바를 쉽게 죽일 수 있기 때문입니다.

또한 차이점을 쉽게 볼 수 있습니다. 코드 생성기도 버그가 있습니다. 버그를 수정하고 150,000 개의 파일을 생성하면 이전 버전과 비교할 때 많은 도움이됩니다. a) 버그가 사라졌고 b) 예기치 않게 변경되지 않았습니다. 당신이 걱정해야 할 부분입니다. 당신이하지 않으면, 내게 알려줘. 그리고 나는 결코 내 회사에서 일하지 못하게 할 것이다.

코드 생성기의 주요 문제점은 안정성입니다. 코드 생성기가 실행될 때마다 바이트의 임의적 인 혼란을 뱉어 버리는 경우에는하지 않습니다 (음질에 신경 쓰지 않는 한). 코드 생성기는 안정적이고 deterministic 이어야합니다. 동일한 입력으로 두 번 실행하면 출력 최하위 비트와 동일 해야합니다 .

생성기가 실행될 때마다 차이가 발생하기 때문에 생성 된 코드를 체크인 할 수 없다면 코드 생성기에 버그가 있습니다. 고쳐. 필요한 경우 코드를 정렬하십시오. 순서를 유지하는 해시 맵을 사용하십시오. 출력을 무작위로 만들려면 필요한 모든 작업을 수행하십시오. 마치 코드에서 다른 곳에서하는 것처럼 말입니다.

버전 제어하에 있지 않을 수도있는 생성 된 코드는 문서입니다. 문서는 다소 부드러운 대상입니다. 잘못된 버전의 문서를 재생성 할 때 문제가되지 않습니다 (예 : 다소 오탈자가 있음). 하지만 릴리스에 대해서는 어쨌든 그렇게 할 수 있으므로 출시 간의 차이점을 확인할 수 있습니다. 예를 들어 릴리스 정보가 완전한지 확인하는 데 유용 할 수 있습니다.

JAR 파일도 체크인하지 않습니다. 내가 모든 빌드와 완전한 확신을 완전히 제어 할 수 있기 때문에 1 분 안에 모든 버전의 소스를 다시 얻을 수있을뿐만 아니라 추가 수동 개입없이 빌드하는 데 필요한 모든 것이 있음을 알 수 있습니다. ? 다시 말하지만, 특별한 릴리스 레포에 넣는 것이 좋을 수도 있지만, 회사 웹 서버에 지난 3 년간 복사본을 다운로드하는 것이 좋습니다. 생각해 보라. 바이너리를 비교하는 것은 어렵고 많이 알려주지 않는다.


이것은 빌드 자동화 및 빌드 파일이 들어오는 곳입니다.

예를 들어, 프로젝트를 빌드 할 수 있습니다 (두 개발자는 동일한 빌드 소프트웨어가 분명히 필요합니다). 그런 다음 두 개의 다른 IDE를 사용할 수 있습니다.

생성되는 '쓰레기'에 관해서는, 나는 그것을 무시하는 경향이있다. 나는 이것이 언어에 무관심한 것이지만 Visual Studio를 고려해야한다는 것을 알고 있습니다. 그것은 사용자 파일 (사용자 설정 등 ..)을 생성합니다. 이것은 소스 제어하에 있어서는 안됩니다.

반면에, 프로젝트 파일 (빌드 프로세스에서 사용되는)이 가장 확실합니다. 나는 당신이 팀에 있고 모두 IDE에 동의 한 다음, IDE 특정 파일을 검사하는 것이 글로벌이고 사용자가 아니거나 필요하지 않다면 제공하는 것이 좋습니다.

그 밖의 다른 질문은 소스 컨트롤에 무엇을 검사해야하는지, 검사해서는 안되는지 설명하는 좋은 일을하므로 반복 할 필요가 없습니다.


제 의견으로는 프로젝트와 환경에 달려 있습니다. 모든 사용자가 동일한 IDE를 사용하는 회사 환경에서는 IDE 파일을 저장소에 추가하는 것이 좋습니다. IDE에 따라 조금씩 다르지만 일부는 사물에 대한 절대 경로를 포함합니다.

다른 환경에서 개발 된 프로젝트의 경우 프로젝트 파일이 모든 개발자에 의해 유지되지 않고 "관련성있는"것들을 찾기가 더 어려워지기 때문에 장기간에 통하지 않을 수 있습니다.


필자의 견해로는 프로젝트 (코드, 파일, 미디어, 필요한 프로그램 정보가있는 데이터베이스 등)를 빌드하는 데 필요한 모든 것이 리포지토리에 있어야합니다. 특히 미디어 / 데이터베이스 파일의 경우이 작업이 부적절하다는 것을 알지만, 나에게 분기 할 수없고 소스 컨트롤을 빌드하지 않으면 작업을 수행 할 수 없다는 것을 알게됩니다. 이 방법은 값싼 분기 생성 / 병합을 사용하는 분산 시스템에서 두 배가됩니다.

다른 건 없니? 다른 곳에 보관하십시오. 개발자는 최대한 자신의 작업 환경을 선택해야합니다.







version-control