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