2012-11-21 4 views
3

나는 힘내에서 (대형) 포트란 프로젝트를 가지고있다. 개발중인 기능에 해당하는 다른 활성 분기가 있습니다. 각 분기에 대해 컴파일 된 버전의 코드를 유지 관리하는 편리한 방법을 찾고 싶습니다.힘내 : 여러 지점을 가진 프로젝트 빌드

코드는 현재 Make를 사용하여 컴파일되며 모든 오브젝트 파일은 바이너리와 함께 별도의 폴더 (예 : build_branch1)에 보관됩니다. 디렉토리 구조는 다음과 같다 :

메이크
./build_branch1/objects
./build_branch2/objects
./build_branch2/bin
./build_branch1/bin
./src
. ..

원칙적으로 다음과 같이 모든 분기를 컴파일 할 수 있습니다.

0 자식 체크 아웃 BRANCH1
만들 --prefix = build_branch1
자식 체크 아웃 브랜치
할 --prefix = build_branch2
등 ...

만들기는 소스의 타임 스탬프를 비교한다 (갓 Git에서 build_branchN 폴더의 오브젝트 파일로 체크 아웃하고 변경된 파일을 다시 컴파일합니다. 문제는 Git이 branch1과 branch2 사이에 다른 모든 소스 파일의 타임 스탬프를 변경하여 많은 파일이 필요하지 않을 때 다시 컴파일되도록하는 것입니다. 코드를 컴파일하는 데 오랜 시간이 걸리므로 (최대 30 분), 이는 큰 불편이 될 수 있습니다.

이 경우 가장 좋은 전략이 무엇인지 궁금합니다. 이 게시물에서와 같이 각 체크 아웃 후에 타임 스탬프를 업데이트하려고합니다. What's the equivalent of use-commit-times for git? 무엇을 권하고 싶습니까?

답변

3

modifying timestamp on each checkout 대신 mine : git notes 등의 답변 당시에는 없었던 메커니즘을 사용할 수 있습니다.

당신 수 : 각 빌드 후

  • 의 각 빌드 이전 빌드 타임 스탬프
  • 로 만든 커밋 메모, 마지막 빌드 (분기의 이름을 따서 명명 네임 스페이스에) 메모를 찾아 타임 스탬프 (timestamp)와 타임 스탬프를 가진 파일 (git 상태에 따라 현재 수정되지 않음)을 수정하십시오. (그래서 계속 수) 현재의 역사 (의 SHA1을 변경하지 않는 방법으로
  • 망할 놈의 repo에서

    • :

    아이디어는 당신이 필요로하는 정보를 기록하는 것입니다 커밋은 수정되지 않습니다.)

+0

감사합니다. 그것은 깔끔한 생각입니다. 나는 각 체크 아웃에서 뭔가를한다는 생각을별로 좋아하지 않았다. (내가하는 체크 아웃의 대부분은 코드를 작성하는 것이 아니다.) – calys

관련 문제