遵循SVN中的符号链接

我有一个Linux目录(并不需要任何Windows结帐):

/home/me/projects/project1 

在这个项目中,我需要SVN(1.8.8)来遵循一个符号链接“link1”:

 /home/me/projects/project1/link1/<some_directories_and_files> 

但SVN不会让我这样做,它只是添加link1而不是它的内容。 如果我尝试添加其内容,则会出现错误:

 svn add link1/* svn: E145001: Can't schedule an addition of '/home/me/projects/project1/link1/first_directory' below a not-directory node 

我试图转换链接到硬链接,但我不能这样做:

 ln /path/to/my/linked/directory link1 ln: '/path/to/my/linked/directory': hard link not allowed for directory 

任何想法? 你如何处理这种configuration? 我只需要从/home/me/projects/project1 svn commit一个简单的svn commit

Solutions Collecting From Web of "遵循SVN中的符号链接"

如果我明白你的问题,你有:

 project1/ project1/link1 -> ../../some/where/else 

如果你做了一个简单的svn add link1 ,它将一个符号链接条目添加到subversion版本库,但是你要完成的是将其他地方的东西放到树中。

如果是这样,那么你的方向是错的,你应该在link1下创建真实的文件和目录,并将目标位置符号链接到链接目录。 这将是解决这个问题的简单方法。

另一个解决方案是将位置../../some/where/else作为svn位置,并将link1作为外部定义。 当你在主目录中提交时,外部实体将同时提交,这将实现存储信息; 但为了确保其他位置保持同步,您必须确保将其更新为与存储的数据相同的版本。

就我而言,在我的桌面上,我有一个设置目录:

 $HOME/settings 

这是一个包含.bashrc.profile.vimrc.vim等文件和svn回购文件夹的目录的签出副本。 我所有的配置文件和目录都符号链接到这个文件夹中,例如.profile – > settings/.profile等等。当我进行修改时,它们反映在svn树中,我可以将其重新提交以确保当我去另一个系统时,我不会失去我的配置设置。

如果你真的希望svn遵循符号链接作为硬链接(你不能建立目录硬链接,因为这将是一件坏事 ™),那么你就必须破解svn客户端源,以便它做你想要的; 但这将是一个维护噩梦。

你可以避免将符号链接转换成一个指向目标的绑定挂载点,但这有它自己的问题 – 你需要成为root用户才能完成这个任务,并且最终会在/ proc / mounts中留下有趣的条目来完成这个:

 mount --bind /absolute/path/to/some/where/else project1/link1