是否可以设置SVN以仅在某些操作系统上检出某些文件?

时间:2017-08-04 20:25:32

标签: svn cross-platform

我有一位客户向我们提供了一些数据文件。客户主要在Linux上工作,并且有些文件名仅在大小写(大写/小写)中有所不同,例如R40r40位于同一文件夹中。我已经通过Linux机器将它们添加到我的存储库中了,但现在当我在Windows上使用存储库时,它说有几个文件丢失,因为Windows对文件名不区分大小写,并且它不能文件夹中同时包含R40r40。这阻止我做一些SVN操作,比如开始合并。显然,我不仅可以更改文件的名称并使其软件仍然有效,但是当我们在Windows上工作时,我们不需要这些文件。

有没有办法解决这个问题,同时仍然将客户的文件存放在Linux检出的存储库中?为方便起见,我们只是想在存储库中使用它们。

2 个答案:

答案 0 :(得分:1)

没有。我不知道任何选项或属性可以直接用subversion来解决这个问题。 (列出了可能的属性here

一种可能的解决方法可能是一些"客户端挂钩"。 (这是 subversion本身的集中操作,你需要访问这些客户端窗口的每台机器)

如果您在Windows上使用TortoiseSVN客户端,您可以安装客户端挂钩并执行任何"无论什么"你想要在这个脚本中。但请记住,要在每台Windows机器上单独设置客户端挂钩。

有关使用TortoiseSVN的客户端挂钩的更多详细信息,请参阅TortoiseSVN (in the Chapter Client Side Hook Scripts)的文档。

答案 1 :(得分:1)

如果Windows客户端可以忽略整个目录而不是目录中的特定文件,则可以使用svn:externals property在存储库上创建Windows特定视图。

让我们说你的回购看起来像这样:

/trunk/linux_and_windows_dir_1
/trunk/linux_only_dir_1
/trunk/linux_and_windows_dir_2
/trunk/linux_only_dir_2
...

您可以创建以下特定于操作系统的中继:

/linux_trunk 
  svn:externals = 
    /trunk/linux_and_windows_dir_1
    /trunk/linux_only_dir_1
    /trunk/linux_and_windows_dir_2
    /trunk/linux_only_dir_2

/windows_trunk 
  svn:externals = 
    /trunk/linux_and_windows_dir_1
    /trunk/linux_and_windows_dir_2

然后让Lunux用户签出并使用linux_trunk。 Windows用户将结帐windows_trunk。由于两个特定于操作系统的中继仅包含外部定义,因此检入其中的任何内容都将自动检入/ trunk。

如果Windows用户检查到/ windows_trunk / linux_and_windows_dir_1的更改 然后该更改也将应用于/ trunk / linux_and_windows_dir_1和 / linux_trunk / linux_and_windows_dir_1。

正如我所说,只有在使用目录而不是单个文件指定repro的Windows特定部分时,这才有效。