我有一个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
我尝试将link1转换为硬链接,但我也不能这样做:
ln /path/to/my/linked/directory link1
ln: ‘/path/to/my/linked/directory’: hard link not allowed for directory
有什么想法吗?你如何处理这种配置?我只需要提交/home/me/projects/project1
来自简单svn commit
答案 0 :(得分:8)
如果我理解你的问题,你有:
project1/
project1/link1 -> ../../some/where/else
如果你做一个简单的svn add link1
,它会在subversion存储库中添加一个符号链接条目,但是你要完成的是将其他东西放到树中。
如果是这种情况,那么你正朝着错误的方向奋斗,你应该在link1下创建真实的文件和目录,并将目标位置符号链接放到link1目录中。这将是解决问题的简单方法。
另一个解决方案是将位置../../some/where/else
置于其自身的svn位置,并使link1成为该位置的外部定义。当您在主目录中提交时,外部将同时提交,这将实现存储信息;但是为了确保其他位置保持同步,您必须确保将其更新为与存储数据相同的版本。
就我而言,在我的桌面上,我有一个设置目录:
$HOME/settings
这是包含.bashrc
,.profile
,.vimrc
,.vim
等文件和文件夹的目录的已检出副本svn
个回购。我的所有个人资料文件和目录都是符号链接到此文件夹中,例如.profile
- &gt; settings/.profile
等。当我进行更改时,它们会反映在svn树中,我可以提交回来,以确保在我转到另一个系统时不会丢失配置设置。
如果你真的希望svn遵循符号链接作为硬链接(你不能制作目录硬链接,因为它会是坏事™),那么你将不得不破解svn客户端来源所以它做了你想要的;但这将是一场维护噩梦。
你可以让符号链接成为一个指向目标的绑定挂载点,但这有它自己的问题 - 你需要成为root来完成这个,它最终会离开/ proc / mounts中的有趣条目可以实现此目的:
mount --bind /absolute/path/to/some/where/else project1/link1