2012-10-11 90 views
1

背景:SVN是否具有與.gitattributes相同的功能?

我有兩個Unity3d項目:

  • 第一,其統一的首選項設置爲「混合資產」模式(有些文件是文本的,有些是二進制)和
  • 的第二,其偏好設置爲「強制文本」(大多數二進制文件被翻譯爲YAML文本,因此幾乎所有文件都可以是diff)。

爲了設置第一個項目的文件文本/二進制,我們~/.subversion/config文件與文件及其SVN屬性(*的.cs文件設置爲svn:eol-style=native的列表一起啓用svn auto-props* .unity文件被設置爲svn:mime-type=application/octet-stream,等等)。

問題:

由於我們的第二個項目現在支持所有的文件文本模式下,我們需要使用一套不同的規則auto-props所以* .unity文件作爲svn:eol-style=native現在處理。

我看到git可以使用.gitattributes這是每個項目(或每個目錄)的基礎上,所以我們可以有這個功能。 SVN可以用我們可以在我們的回購中分享的某種文件來做到這一點,所以每個提交的用戶都會使用相同的默認設置?

回答

2

一個你必須明白,在Git中有一個存儲庫和工作目錄並無實質區別的東西。從父存儲庫中取出時,您將創建自己的存儲庫。

.Gitattributes影響你的本地庫,只有您的本地副本。其他人可以更改其存儲庫的.gitattributes。畢竟,這是他們的存儲庫。如果父存儲庫正在接收更改,則可以使用預接收掛接來驗證檢索到的數據包,以確保它遵循父存儲庫的策略。您不應該使用.gitattributes來強制執行策略,只能幫助您遵循策略。

Subversion的自動性能配置類似。它會影響該用戶的所有工作副本。每個工作副本沒有單獨的配置。您可以使用--config-dir參數上的許多Subversion命令來指定該操作完全不同的版本的配置文件,所以你可以有多個配置文件,並使用--config-dir指定文件。這不方便,但它是可能的。

如果你想確保你的屬性都設置正確,你需要一個pre-commit掛鉤來上提交的屬性,並拒絕對文件無效的屬性或屬性值的提交。我有一個pre-commit hook可以做到這一點。

相關問題