3

CMake を使用して、プロジェクトのアウト オブ コア/アウト オブ ソース ビルドを実行しており、"git describe --tags --dirty" の結果をバージョン番号としてプロジェクトに含めたい (バグの参照用です)。ただし、コード リポジトリの場所を git に伝えようとすると、「致命的です: git リポジトリ (または親ディレクトリのいずれか) ではありません: .git」のようなエラーが発生します。

現在の作業ディレクトリ以外に、git がレポを探す場所を指定する方法はありますか?

4

4 に答える 4

5

git-引数で使用できます--git-dir

于 2013-02-28T22:15:52.713 に答える
3

--git-dirコマンドラインで指定するか、環境で設定するか、パスを:GIT_DIRという名前のファイルに書き込むか、リポジトリへのソフトリンクを作成します: 。.gitecho gitdir: /path/to/.git > .gitln -s /path/to/.git

(最後の 2 つのオプションはおそらく最も望ましくないものであり、完全を期すためにここで言及しただけです。)

于 2013-02-28T22:16:46.970 に答える
3

または、cmake から - 引数を使用できWORKING_DIRECTORYます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}ます。

于 2013-02-28T22:18:52.823 に答える
1

コマンドラインで --git-dir を指定できます

注意: これは Git 2.21 (2019 年 2 月) より前では完全には機能しませんでした:
" git --work-tree=$there --git-dir=$here describe --dirty" は、ユーザーが誤って指定したワークツリーの場所に注意を払わなかったため、正しく機能しませんでしたが、修正されました。

commit c801170commit 2ed5c8e (2019 年 2 月 3 日) by Sebastian Staudt ( koraktor)を参照してください。
( 2019 年 2 月 7 日にコミット a1e1900Junio C Hamanoによってマージされました)gitster

describe: の作業ツリーをセットアップします--dirty

ベアリポジトリでもコミットを記述できるはずなのでNEED_WORK_TREE、ビルトインの実行時には使用しません。git-describeただし、--dirtyフラグには作業ツリーが必要です。を呼び出さないので setup_work_tree()、たまたまそこにあるディレクトリを使用します。これがインデックスと一致する可能性は低いです。つまり、実際の作業ツリーがクリーンであっても、「ダーティ」と言うでしょう。

setup_work_tree()ユーザーが要求したことがわかったら、呼び出すことで修正できます--dirty

この--brokenオプションには作業ツリーも必要です。しかし、その実装が呼び出すためgit-diff-index、プロセスで作業ツリーをセットアップする必要はありませんgit-describe

于 2019-03-09T23:24:44.270 に答える