jsdocs 와 같은 도구를 사용하면 코드의 주석을 기반으로 코드베이스에 정적 HTML 파일 및 해당 스타일이 생성됩니다.
이 파일들을 Git 저장소에 체크인해야합니까 아니면 .gitignore로 무시해야합니까?
jsdocs 와 같은 도구를 사용하면 코드의 주석을 기반으로 코드베이스에 정적 HTML 파일 및 해당 스타일이 생성됩니다.
이 파일들을 Git 저장소에 체크인해야합니까 아니면 .gitignore로 무시해야합니까?
답변:
특정 요구 사항이 없으면 버전 제어로 체크인 된 다른 파일을 사용하여 빌드 도구에서 빌드, 재생성, 구성 또는 생성 될 수있는 파일을 체크인해서는 안됩니다. 파일이 필요할 때 다른 파일에서 (재) 빌드 될 수 있습니다. 소스 (그리고 일반적으로 빌드 프로세스의 일부 측면 일 것입니다).
따라서 해당 파일은 .gitignore로 무시해야합니다.
내 규칙은 리포지토리를 복제하고 "빌드"버튼을 누르면 잠시 후 모든 것이 빌드되는 것입니다. 생성 된 문서를 위해 이것을 달성하기 위해, 당신은 두 가지 선택을 할 수 있습니다 : 누군가가이 문서들을 생성하고 그것들을 git에 넣을 책임이 있습니다. 버튼은 내 컴퓨터에 모든 문서를 작성합니다.
생성 된 문서의 경우 헤더 파일을 한 번 변경하면 문서를 변경 해야하는 곳이 있습니다. 다른 개발자가 업데이트했을 때뿐만 아니라 항상 올바른 문서를 원하기 때문에 각 개발자의 컴퓨터 에서이 작업을 수행하는 것이 좋습니다. 무언가를 생성하는 데 시간이 오래 걸리고 복잡 할 수 있으며 라이센스가 하나 뿐인 소프트웨어가 필요한 경우도 있습니다.이 경우 한 사람에게 물건을 git에 넣는 책임이 더 좋습니다.
@Curt Simpson : 모든 소프트웨어 요구 사항을 문서화하는 것이 여러 곳에서 본 것보다 훨씬 낫습니다.
./Test
하고 빌드를 얻거나 빌드를 얻는 데 필요한 정보를 얻을 수 있습니다.
일부 저장소 (동일 또는 다른 저장소, 바람직하게는 자동으로 생성됨)에 배치하면 문서의 모든 변경 사항을 볼 수 있다는 이점이 있습니다. 때때로 이러한 차이는 소스 코드의 차이보다 쉽게 읽을 수 있습니다 (구체적으로 변경 사항이 아닌 사양 변경 만 신경 쓰면).
그러나 대부분의 경우 다른 답변에서 설명한 것처럼 소스 제어에 포함시킬 필요가 없습니다.
배포 프로세스에 따라 다릅니다. 그러나 생성 된 파일을 저장소에 커미트하는 것은 예외이며 가능하면 피해야합니다. 당신은 다음과 같은 질문에 모두 대답 할 수있는 경우 예를 , 당신의 문서에서 확인하는 것은 유효한 옵션이 될 수 있습니다
이러한 조건이 충족되면 레거시 시스템이나 특수 보안 제한이있는 시스템으로 배포하는 것입니다. 또는 생성 된 파일을 릴리스 분기로 커밋 하고 마스터 분기를 깨끗하게 유지할 수 있습니다.
따라 다릅니다. 그 문서가 있다면 :
와 같은 저장소의 일부가되어야 readme.md
한다면 git repo에 보관하는 것이 좋습니다. 이러한 상황을 자동화 된 방식으로 처리하는 것은 까다로울 수 있기 때문입니다.
CI 시스템과 같이 자동으로 구축하고 업데이트 할 수있는 방법이없고 일반 사용자에게 표시되도록하려면 git repo에 보관하는 것이 좋습니다.
그것들을 만드는 데 많은 시간이 걸리고 유지하는 것이 정당합니다.
일반 사용자 (예 : 사용자 설명서)에게 표시되도록 만들어졌으며 빌드하는 데 상당한 시간이 걸리고 이전 문서에 액세스 할 수없는 (오프라인) 문서를 git repo에 보관하는 것이 좋습니다.
일반 사용자를 대상으로하고 변경 / 진화의 이력을 보여 주어야하므로 이전 문서 버전을 커밋하고 이전 버전과 연결된 새 버전을 빌드 / 커밋하는 것이 더 쉬울 수 있습니다. 정당하다.
모든 팀이 커밋되어야 할 특별한 이유가 있다면, git repo에 보관하는 것이 합리적입니다. (우리는 당신의 상황을 모릅니다, 당신과 당신의 팀은 않습니다)
다른 시나리오에서는 무시해도됩니다.
그러나 자식을 git repo에 보관하는 것이 정당하다면 팀이 직면하고있는 또 다른 큰 문제의 징조가 될 수 있습니다. (CI 시스템 또는 이와 유사한, 끔찍한 성능 문제가없고, 구축하는 동안 다운 타임이 발생하는 등)
버전 관리의 원칙에 따라 "기본 개체"만 "파생 개체"가 아닌 저장소에 저장해야합니다.
규칙에는 예외가 있습니다. 즉, 파생 오브젝트를 필요로하는 저장소 소비자가 있고이를 생성하는 데 필요한 도구가 없을 것으로 예상되는 경우입니다. 재료의 양이 다루기 어려운 것과 같은 다른 고려 사항도 중요합니다. (프로젝트가 모든 사용자에게 도구를 갖도록하는 것이 더 좋을까요?)
극단적 인 예는 컴파일러가 해당 언어로 작성된 희귀 한 프로그래밍 언어를 구현하는 프로젝트입니다 (잘 알려진 예에는 Ocaml 또는 Haskell이 포함됨)). 컴파일러 소스 코드 만 저장소에 있으면 아무도 빌드 할 수 없습니다. 가상 머신에서 실행할 수있는 컴파일 된 버전의 컴파일러가 없으므로 해당 컴파일러의 소스 코드를 컴파일 할 수 있습니다. 또한 언어의 최신 기능은 컴파일러 소스 자체에서 즉시 사용되므로 최신 버전의 컴파일러에 가깝게 빌드해야합니다. 한 달 전에 존재하지 않은 언어 기능을 사용합니다. 이 상황에서 컴파일 된 버전의 컴파일러는 반드시 저장소에 체크인하고 최신 상태로 유지해야합니다.