2013-08-19 5 views
1

빌드 할 때 Git 리비전 (SHA1)을 내 실행 파일에 임베드하고 싶습니다. 나는이 같은 로컬 작업을 수행 할 수 있습니다NetBeans로 원격 빌드하는 동안 실행 파일에 Git 리비전을 포함하십시오.

git log -1 --format='%h' >version 
objcopy --input binary --output elf64-x86-64 version version.o 
# link version.o into the executable 

문제는, 난 (리눅스) 원격으로 구축하기 (Windows에서) NetBeans를 사용하고 있습니다. 다소 역설적입니다. git 명령은 로컬 시스템 (소스가있는 곳)에서 실행해야하지만 objcopy 명령은 원격 서버 (빌드가 수행되는 곳)에서 실행해야합니다. NetBeans에서 프로젝트의 Makefile을 편집하여 사전 빌드 단계를 삽입 할 수는 있지만 원격 빌드 단계 전에 로컬 시스템에서 실행되도록 git 명령을 넣는 방법과 위치를 파악할 수 없기 때문에 문제가됩니다.

localhost에서 git 명령을 실행하기 위해 별도의 NetBeans 프로젝트를 만들려고했는데 "진짜"프로젝트가 종속되어 있다고 생각했지만 NetBeans가 프로젝트를 만들 수있는 것 같지 않습니다. " 아무것도하지 않습니다 "(즉, 소스 파일이없고 라이브러리 나 실행 파일을 생성하지 않습니다 - 버전 텍스트 파일 만 생성합니다).

원격 빌드에 "자동 복사"옵션이있는 C++ 용 NetBeans 7.3을 사용하고 있습니다. 가능한 해결책은 서버에 저장된 Git 저장소와 함께 NFS/Samba 모드를 사용하는 것일 수도 있지만 프로젝트에 이미 오랜 시간 동안 자동 복사를 사용하는 여러 개발자가 있기 때문에 상당히 혼란 스러울 수 있습니다. 따라서 원격 빌드를 시작하기 전에 NetBeans에서 로컬로 일부 파일을 생성하는 솔루션을 얻는 것이 좋습니다.

답변

1

Netbeans 작업을 시작할 때 한 가지 해결책은 해당 버전 파일을 이미 최신 상태로 유지하는 것입니다.

post-commit hook은 Netbean 작업을 읽을 수 있도록 올바른 위치에서 해당 파일을 생성 할 수 있습니다.

+0

감사합니다. 지금 보았던 가장 큰 단점은 Git 후크가 원격 (서버)에 게시되지 않으므로 각 사용자는 복제 후 후크를 설정하기 위해 스크립트를 실행해야합니다. 아직도, 나는 그것을 시도 할 것이다. –

+0

@JohnZwinck no : 당신이 푸시 할 repo에 대한 포스트 커밋 훅 (post-commit hook)과 NetBeans 작업에서 읽는 설정을 의미했습니다. – VonC

+0

이제 혼란스러워. 클라이언트 쪽에서 파일을 업데이트해야하며 클라이언트가 이전 버전을 체크 아웃하면 스크립트를 다시 실행해야합니다. 그래서 그것은 자식 "서버"측면에만 후크 수 없습니다. 어쨌든, 나는 각 사용자가 복제 후에 설치해야하는 클라이언트 측에서 후크를 사용하여 아이디어를 구현했습니다. 당신이 그 길을 알고 있다면 나는 그것을 듣기를 좋아할 것입니다. 어느쪽으로 든 고마워! –