2

git の rcs キーワード置換を実装しようとしています。要件は、git リポジトリに入る前に作業コピーをフィルタリングする必要があることです。そのため、コミット後、リポジトリと同じ作業ツリーに変更を加えた作業コピーがあります。

コミット後のスクリプトでファイルを再チェックアウトすることを期待して、フィルターを使用して実装しようとしました。一般的には機能しましたが...ファイルを削除してチェックアウトすると、「変更済み」ステータスになります。そして、日付やコミットIDなど、実際の違いがあります。だから、私は迷っています。その上、「ident」で問題なく動作します

だから、ここに私がしたことのスナップショットがあります:

.gitattribute --> *hpp filter=rcs-kwdsubst
.git/config --> [filter "rcs-kwdsubst"] clean=my-filter
%> git commit file.hpp -m "blah"
%> rm file.hpp
%> git checkout file.hpp
%> git status
    ... modified file.hpp ...

どうして???それを修正する方法は?

4

1 に答える 1

0

少なくとも部分的に、私自身の質問に答えます。git のフィルターは、コミット/チェックアウト時だけでなく、「差分」およびおそらくマージ時にも実行されるようです。これは混乱です。

最初のアイデアは、バージョン文字列のマージ競合が自然になくなるように、コミットする前にファイルをリポジトリ内の「標準」状態に「クリーニング」することにより、バージョンに関するマージの問題を回避することだったと思います。チェックアウトされたファイルのバージョンのみを変更します。

まあ、それはバージョン管理システムの考え方を損なう別の問題を引き起こしました:

  1. チームの全員が異なるバージョンのファイルを持っています。
  2. チェックアウト時にファイルが異なるため、特定の過去のバージョンに戻る方法はありません。

独自のコミットごとのスクリプトを使用せずに回避する方法があるかどうかはわかりません。フィルターもフックも機能しないため、ファイルのバージョン管理ができません。

于 2012-11-19T22:08:11.193 に答える