使用 TortoiseSVN 将某个 SVN 目录下的目录指向另一个仓库
—— 独立观察员 2015.04.09
哈哈,不知道大家有没有这种需求,是不是看到标题感到有点蛋疼呢?无论如何,我今天想要实现这个操作,发现还不是那么容易的呢。可能使用原生 SVN 或者使用命令行可以比较容易达到这个效果吧(不知道,也可能不行),不过虽然我是个程序员,但坦白说我并不喜欢命令行。所以,我就寻求直接使用 TortoiseSVN 的图形化操作来达成的方法。没想到还真成了,不敢独享,分享如下。
先来看看 TortoiseSVN 的机制:
也就是一个 SVN 主目录(指定了一个仓库了的)下有个 ".svn" 目录,用于存储一些信息。在主目录内的空白处右键,可看到 TortoiseSVN 的菜单,在 "导出" 下面有个 "重新定位" 的选项,这就是用于重新指定数据仓库的指令,当然,这是用于切换整个 SVN 目录的仓库的。
可以看到,切换还是挺方便的:
那么,在子目录下能不能同样地操作呢?我们来试试,进入子目录,然后右键展开菜单:
可以看到,此处不再出现 "重新定位" 选项了,也就是说不能如前面那样操作了。
那么怎么办呢?其实也很简单。既然 ".svn" 是存储相关信息的,那么我们不让它读到相关信息不就好了嘛。
具体方法有移动目录或改名等,移来移去太麻烦了,我们来改名吧 —— 在 ".svn" 的最前面添加一些字符:
此时无论在此目录或子目录内右键,都可发现相关菜单项减少了很多:
也就是 TortoiseSVN 不认为这是个 SVN 目录了。
这样,我们就可以在子目录中右键 -->"SVN 检出",然后在弹出窗口中就可以任意选择 SVN 仓库地址进行检出了:
其实我本次是想将放在新浪 SAE 的 SVN 目录中的一些内容传到开源中国的 Git@OSC 代码托管仓库中,所以我先选择的是 "导入" 操作:
反正经过一番操作之后,该子目录被认可为 SVN 目录了:
现在来恢复外层目录为原来的 SVN 目录,只需将相关文件夹改回原来的 ".svn" 名字即可。不过,在 Windows 下还有些不同,直接将前面添加的字符删去,会提示 "必须键入文件名",就跟开始时如果只在最后添加字符是一样的错误:
可参考《教你如何在 Windows 平台上创建以点 (.) 开头的文件名》。此处只需在删除前面的字符时同时在最后加个点即可,最后的点系统会自动忽略:
好了,现在为了看看两个库是不是都能用,我们在相关子目录中添加个文件:
然后分别在 "这个目录内空白处" 和 "上层目录空白处" 右键 -->"SVN 提交":
可见是都能提交的。
这样我们就能更加灵活地使用 SVN 了,祝大家使用愉快!