2013-02-28 24 views
2

我正在使用CMake来执行我的项目的非核心/源代码构建,并且希望包含“git describe --tags - -dirty“作为项目中的版本号(仅供参考)。但是,任何试图告诉git代码回购的地方的尝试都会导致类似“致命的错误:不是git存储库(或任何父目录):.git”。在当前目录之外获取GIT构建散列

有没有一种方法可以指定git应该在当前工作目录以外的位置查找回购站?

回答

2

或者你也可以从CMake的使用WORKING_DIRECTORY -argument到execute_process()。这是我做的:

execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --dirty 
    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" 
    RESULT_VARIABLE res 
    OUTPUT_VARIABLE out 
    ERROR_QUIET 
    OUTPUT_STRIP_TRAILING_WHITESPACE) 

然后我有在${out}版本。

5

您可以使用git--git-dir -agument。

3

你可以在命令行上指定--git-dir,或者在环境中设置GIT_DIR,或者路径写入名为.git文件:echo gitdir: /path/to/.git > .git或作出的软链接回购:ln -s /path/to/.git

(最后两个选项可能是最不可取的,并只提到完整性。)