2012-11-08 36 views
2

最終我試圖實施混帳一個RCS的關鍵字替換。要求是在進入git repo之前必須對工作副本進行過濾。所以,提交後我有工作副本與我的工作樹中的變化,這是在回購相同。文件重新簽出與「乾淨」的過濾器修改的狀態

我竭力試圖實現它使用過濾器,希望能重新籤的文件在提交後的腳本。它在一般情況下工作,但是...在刪除文件並檢查出來後它會得到「修改」狀態。在日期或提交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 ... 

爲什麼???如何解決它?

+0

忘了提,如果我只用.gitattribute - > * HPP的ident,它的工作原理確定的上述方案和修改的$ id $標籤如預期,沒有修改的狀態。 – Serge

回答

0

回答我的問題,至少部分。它看起來像Git中的過濾器不僅在提交/簽出時運行,而且還在'差異'和大概在合併時間運行。這是一團糟。

我認爲最初的想法是,以避免一些由「清潔」在提交之前在庫中的文件,以「標準」狀態合併周圍版本的問題,從而使合併版本字符串衝突自然會消失。它只會修改已簽出文件中的版本。

那麼,它創造了一個不同的問題,這損害了版本控制系統的想法:

  1. 每一個對球隊有不同版本的文件。
  2. 沒有辦法恢復到一個特定的過去的版本,因爲文件將在結賬不同。

我不知道是否有辦法繞過它而不使用自己的每個提交腳本。過濾器和掛鉤都無法工作,因此無法對文件進行版本管理。