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

是否可以将SVN设置为仅在某些操作系统上签出某些文件?,svn,cross-platform,Svn,Cross Platform,我有一位客户向我们提供了一些数据文件。客户主要在Linux上工作,有些文件名仅大小写不同(上/下),例如同一文件夹中的R40和R40。我已经通过Linux机器将它们添加到我的存储库中,但是现在当我在Windows上使用存储库时,它说有几个文件丢失了,因为Windows对文件名不区分大小写,并且不能同时在文件夹中包含R40和R40。这会阻止我执行一些SVN操作,例如启动合并。显然,我不能仅仅更改他们文件的名称,让他们的软件仍然工作,但当我们在Windows上工作时,我们不需要这些文件 在Linux

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


在Linux签出存储库中仍保留客户文件的情况下,是否有办法解决此问题?为了方便起见,我们只想将它们放在存储库中。

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

一个可能的解决方法是一些“客户端挂钩”。(这是而不是subversion本身的集中操作,您需要对这些客户端windows计算机进行一些访问)

如果您在Windows上使用TortoiseSVN客户端,您可以安装客户端钩子,并在此脚本中执行“任何”操作。但是请记住,在每台windows机器上分别设置客户端钩子


如需有关客户端与TortoiseSVN挂钩的更多详细信息,请参阅的文档。

如果Windows客户端可以忽略整个目录,而不是目录中的特定文件,则可以使用在存储库上创建特定于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\u trunk。由于两个特定于操作系统的中继只包含外部定义,因此签入它们的任何内容都将自动签入/trunk

如果windows用户将更改签入/windows\u trunk/linux\u和\u windows\u dir\u 1 然后,该更改也将应用于/trunk/linux\u和\u windows\u dir\u 1和 /linux_主干/linux_和windows_目录1


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

您能解释一下您的意思吗?我不知道我怎样才能正确地构建它。