문제

버전 제어 시스템에 대한 온라인 인터페이스를 사용하는 것은 최신 버전의 코드에 대한 게시 위치를 확보하는 좋은 방법입니다.예를 들어 여기에 LaTeX 패키지가 있습니다(변경 사항이 실제로 작동하는지 확인할 때마다 CTAN에 릴리스됨).

http://github.com/wspr/pstool/tree/master

패키지 자체는 처리 시 문서, 추가 정보, 설치 프로그램 파일 및 LaTeX에서 사용되는 패키지를 구성하는 실제 파일을 생성하는 단일 파일(이 경우 pstool.tex)에서 파생됩니다.

이 항목을 쉽게 다운로드하려는 사용자를 위해 위에서 언급한 모든 파생 파일을 저장소 자체와 마스터 파일 pstool.tex에 포함합니다.즉, 패키지 파일 pstool.sty가 마스터 파일의 생성된 하위 집합이기 때문에 커밋할 때마다 변경 횟수가 두 배로 늘어납니다.

이것은 버전 관리의 왜곡입니까?


@존 림잡 좋은 지적을 했습니다:

버전 제어를 다운로드 서버로 사용하는 대신 생성된 파일을 다른 곳에 게시하여 다운로드할 수 있는 다른 방법이 있습니까?

이 사건의 핵심은 바로 이것이다.예, 패키지의 출시된 버전은 다른 곳에서 얻을 수 있습니다.따라서 생성되지 않은 파일에만 버전을 지정하는 것이 더 합리적입니다.

반면에, @마디르님의 의견은 다음과 같습니다.

현실적이고 반복되는 편리함이 이면에 부담되는 비용보다 더 중요합니다.

또한 사용자가 버그를 발견하고 즉시 수정하면 저장소로 가서 "설치" 단계를 실행할 필요 없이 작업을 계속하는 데 필요한 파일을 가져올 수 있다는 점에서도 다소 적절합니다.

제 생각에는 이것이 더 중요한 사용 사례입니다. 내 특정 프로젝트 세트에 대해.

도움이 되었습니까?

해결책

소규모 시스템 ASP.NET 개발을 위해 Tortoise SVN을 사용하고 있습니다.대부분의 코드는 ASPX로 해석되지만 수동 컴파일 단계에서 생성된 바이너리 DLL은 약 12개입니다.이론적으로 이러한 소스 코드의 버전을 관리하는 것은 그다지 의미가 없지만 개발 환경에서 프로덕션 시스템으로 올바르게 미러링(클릭 한 번)하는 것이 확실히 편리합니다.또한 - 재해 발생 시 SVN에서 한 번의 클릭으로 다시 이전 단계로 롤백됩니다.

그래서 저는 이를 과감히 SVN 아카이브에 포함시켰습니다. 현실적이고 반복되는 편리함은 이면에서 부담되는 비용보다 더 큽니다.

다른 팁

저장소 자체에 포함된 스크립트를 사용하여 자동으로 생성될 수 있는 파일은 버전화하지 않습니다.그 이유는 체크아웃 후 한 번의 클릭이나 명령으로 이러한 파일을 다시 빌드할 수 있기 때문입니다.우리 프로젝트에서는 항상 이 작업을 가능한 한 쉽게 만들려고 노력하므로 이러한 파일의 버전 관리가 필요하지 않습니다.

출력 생성에 필요한 도구를 사용할 수 없는 프로덕션 환경(또는 비개발 환경)에서 사용하기 위해 제품의 특정 릴리스에 '태그'를 지정하는 경우 이것이 유용할 수 있는 시나리오 중 하나입니다.

또한 출시된 제품 버전으로 아카이브를 생성하고 업로드할 수 있는 빌드 스크립트의 대상을 사용합니다.제품 사용자가 다운로드할 수 있도록 프로덕션 서버 또는 HTTP 서버에 업로드할 수 있습니다.

반드시 그런 것은 아니지만 소스 제어에 대한 모범 사례에서는 분명한 이유로 생성된 파일을 포함하지 않는 것이 좋습니다.

버전 제어를 다운로드 서버로 사용하는 대신 생성된 파일을 다른 곳에 게시하여 다운로드할 수 있는 다른 방법이 있습니까?

일반적으로 파생 파일은 버전 제어에 저장되어서는 안 됩니다.귀하의 경우 파생된 파일을 포함하는 tarball을 생성하는 릴리스 절차를 구축할 수 있습니다.

당신이 말했듯이 버전 관리에서 파생된 파일을 유지하면 처리해야 할 소음의 양만 증가합니다.

어떤 경우에는 그렇게 하지만 이는 생성된 파일(예: 스크립트에서 작성된 DNS 영역 파일)이 그 자체로 본질적인 관심을 갖고 개정 제어가 보다 선형적인 감사 추적인 시스템 관리자 유형의 사용 사례에 가깝습니다. 분기 및 태그 지정 소스 제어.

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