매번 새로 결제할 때 내 프로젝트를 컴파일할 수 있는 몇 가지 팁은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/437633

문제

인정하고 싶은 것보다 프로젝트를 처음 접하는 사람들이 체크아웃을 해보니 다양한 리소스, DLL, 설정이 누락된 경우가 많았습니다.나는 새로운 체크아웃에서처럼 내 프로젝트 편집을 원활하게 하는 적절한 습관을 갖고 싶습니다.

버전 관리에서 새로 체크아웃할 때 컴파일 문제가 발생하지 않도록 프로젝트를 구성하는 방법에 대한 팁이나 제안 사항은 무엇입니까?

소스 제어에 필요한 모든 dll 참조가 포함된 "리소스" 폴더를 프로젝트에 유지하기 시작했습니다.다른 사람이 몇 가지 제안을 할 수 있습니까?

도움이 되었습니까?

해결책

당신이 시각적 스튜디오 환경에 있다고 가정하면, 당신이 유용한 것을 찾을 수있는 몇 가지가 있습니다. 물론 우리는 전복을 사용하지만 모든 VCS 도구를 사용해야한다는 점에 유의하십시오.

  • 버전 제어에 모두 (또는 가능한 많은) 종속성을 배치하고 프로젝트에서이를 참조하십시오. 우리는이를 관리하기 위해 전복 외부를 사용합니다.
  • 버전 제어 표준 출력 디렉토리 (빈, OBJ), 즉 사용 SVN : 무시
  • 마찬가지로 버전 제어 사용자 항목을 무시하십시오 ( *.user, *.suo)
  • 또한 구성 파일 (app | web.config)을 제어하지 말고 대신 app.default.config를 작성하고 이전 프로젝트 에서이 파일을 app.config에 복사하십시오. 이를 통해 REGEX 및 토큰을 사용하여 개발자 또는 빌드 서버마다 컴파일을 설정하여 공상을 얻을 수 있으며 CI 빌드의 기존 App.Config 파일을 삭제하여 매번 깨끗한 빌드를 보장 할 수 있습니다. 이를 통해 개발자는 준비가 될 때까지 다른 모든 사람들을 방해하지 않고 구성으로 구성 할 수 있습니다. app.default.config.
  • 버전은 다른 모든 것을 제어합니다 :)
  • 컴파일의 결과로 버전 제어 바이너리 (MSI, DLL 출력 등)가 필요한 경우 애프터 빌드 대상 프로젝트 (WIXPROJ 등)에서 출력을 버전 제어하에있는 다른 디렉토리에 복사하십시오. Subversion을 사용하는 한 가지 팁은 SVN : Externals Directory를 추가/커밋 할 수 있다는 것입니다.이 디렉토리는 라이브러리 등을 푸시하여 참조하는 프로젝트를 제공 할 수 있습니다.

최종 팁 - 깨끗한 체크 아웃을하고 성공적인 편집을 한 후에는 작업 사본에 수정이 있는지 확인하십시오 (예 : TortoisesVN-> 수정 사항을 확인하십시오. 변경 사항이 감지되면 이러한 파일을 무시해야 할 것입니다.

다른 팁

사용되지 않는 이전 컴퓨터를 찾고 자동 "롤링 빌드"를 위해 설정하십시오.

  1. 누군가가 변경 사항을 확인할 때까지 기다리십시오
  2. 모든 파일의 최신 버전으로 업데이트됩니다.
  3. 모든 비 소스 제어 파일 정리 (make clean 충분하지 않습니다 - 잔해를 스캔하고 제거하십시오)
  4. 짓다.
  5. 단위 테스트를 실행하십시오.
  6. 하루에 한 번, 성공적인 달리기에서 바이너리를 구하십시오. 그것을 오늘의 "공식 빌드"라고 부릅니다.

빌드 또는 테스트가 실패하면 오류가있는 이메일을 보내십시오. #2에서 선택된 변경 사항 목록을 포함하십시오.

실제로 기계를 찾을 수 없다면 가상 머신에서 수행하십시오.

도구와 같은 도구 nmaven 의존성 문제를 도울 수 있습니다 ( Java Maven 정보를위한 문서 ....)

연속 통합 도구와 같은 크루즈 컨트롤 각 체크인 후 반복적으로 체크 아웃하고 신청서를 작성하여 빌드를 깨뜨리는 체크인을 경고 할 수 있습니다. 또한 단위 테스트를 실행할 수 있으므로 체크인으로 인한 회귀에도 경고합니다. .

다른 사람이 제안을 할 수 있습니까?

  1. 빌드해야 할 파일을 한 곳 (하나의 디렉토리 및 하위 디렉토리)으로 유지하십시오 ... 대부분의 버전 제어 시스템은 이것을 "작업 디렉토리"라고 부릅니다.
  2. 버전 제어 소프트웨어에는 작업 디렉토리의 내용과 버전 컨트롤의 차이점을 나열하는 명령이 있습니다.
  3. 버전 제어 소프트웨어를 조정하여 (2 단계로 표시된 목록에서) 저장하지 않으려는 유형의 파일 ... 예를 들어 소스 코드 만 저장하고 제외 할 수 있습니다. *.obj 그리고 ...이 파일 유형을 제외하면 2 단계를 실행할 때 차이 목록은 저장하려고하지 않는 파일로 혼잡하지 않음을 의미합니다.
  4. 자동으로 체크 아웃 및 구축을하는 빌드 머신을 고려하십시오 (그리고 '빌드가 깨 졌을 때 이메일을 보내주십시오).

데비안 리눅스에는 정말 멋진 도구가 있습니다 pbuilder, 새로 설치된 시스템의 이미지를 생성 한 다음 코드를 작성하려고 시도합니다. 그것은 데비안 패키지 시스템에서만 작동하지만 아이디어를 훔칠 수 있습니다.

자동화 Chrooted 환경 또는 새로운 설치처럼 보이는 가상 머신에서 구축됩니다. 빌드 스크립트가 DLL 등을 설치합니다. 또는 구성 스크립트는 누락 된 종속성을 열거합니다 (모두 첫 번째 의존성이 아니라 모두).

오전 1시이고 나는 일관되지 않은 소리를 내고 있지만 두 가지 아이디어는 중심입니다.

  • 빈 시스템을 모방 할 수있는 가상 머신 또는 chroot 디렉토리가 있어야합니다. 요즘 가상 머신이 가장 쉽습니다.

  • 가상 머신을 자동으로 확인하고 빌드 할 때까지 빌드 시스템을 조정하거나 누락 된 내용에 대해 불평합니다.

그 시점에서 당신은 프로세스를 자동화 된 야간 빌드의 일부로 만들 수 있으며, 당신은 행복한 야영자가 될 것입니다 :-)

모든 리소스/DLL/설정은 소스 코드와 함께 버전 제어에 체크인되어야 합니다.

소스 코드와 동일하게 레이블이 지정되고 처리되어야 합니다. 이를 통해 이러한 리소스를 소스와 연관시키고 소스 코드/리소스/설정을 단일 엔터티로 처리할 수 있습니다.

우리 회사에서는 Rational ClearCase를 사용합니다. 모든 것 생성된 소스 코드 파일(예:MIDL 컴파일러에서 생성된 .cpp 및 .h 파일).이로 인해 대부분의 빌드가 상당히 원활하게 진행됩니다.

또한 종속성이 제대로 설정되었는지 확인해야 합니다. 그러면 소스 파일이 변경되면 모든 종속 라이브러리가 다시 빌드됩니다.

모든 체크인 전에 상담하는 포괄적 인 체크리스트를 구축 할 수 있지만, 이는 시간이 소요되고 오류가 발생하기 쉬운 일입니다 (특히 여러 개발자에서 모든 사람이 매번 점검 목록을 따라야 할 성격 특성이있는 것은 아닙니다).

대신 간단한 연속 통합 서버를 설정하십시오. cruisecontrol.net 오픈 소스입니다. TeamCity JetBrains는 무료입니다 - 체크인이 완료 될 때마다 빌드가 작동하는 경우.

이런 식으로, 당신은 확인 목록을 따랐기 때문에 일이 효과가있는 것보다는 확실히 알고 있습니다.

SCONS는 크로스 플랫폼을 작동시키고 종속성을 관리하는 데 도움이되는 또 다른 도구입니다. GNU Make와 유사하게 "Scons 파일/스크립트"가 있으며 Python을 사용한다는 사실은 많은 유연성을 제공합니다.

http://www.scons.org/

(나는 스콘과 할 일이 없다. 우리는 그것을 사용한다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top