使用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了,祝大家使用愉快!
10条评论