使用"_svn"替代".svn"的转换脚本

使用"_svn"替代".svn"的转换脚本

在项目团队开发过程中使用TortoiseSvn,遇到一个问题:有些同事使用的_SVN,有些同事使用.SVN(.svn在VS2003等情况下会有问题)。于是想将.SVN 设置成_svn,但改变相关设置不会使已存在的工作拷贝中的管理文件夹从“_svn”自动转换到“.svn”。以下是一种解决方法。

VS.NET在新创建一个Web工程和刷新该工程时,遇到“.*”文件夹就会出问题,但Subversion是要用“.svn”文件夹来储存自己的内部信息的。这可不是Subversion的bug,这bug是VS.NET和它使用的frontpage扩展带来的。

可以通过TSVN的常规设置中的使用“_svn”替代“.svn”目录选项来改变以后生成的工作拷贝中的管理文件夹的名字。使此操作生效需要重启系统
你应该注意到:改变该选项将不会使已存在的工作拷贝中的管理文件夹从“_svn”自动转换到“.svn”。
你需要使用脚本来自行完成这项工作,或是简单地重新检出一个新的工作拷贝。但当项目很大时,重新检出并非明智选择。
下面从Subversion Mailing List Archives里搜索了一些实现的简单脚本:

rename_svn.bat
复制内容到剪贴板
代码:
rem @ECHO OFF
FOR /R %%f IN (.svn) DO IF EXIST "%%f" (
    ATTRIB -h "%%f"
    RENAME "%%f" _svn
    ATTRIB +h "%%~pf\_svn"
)
renamedotsvn.bat
复制内容到剪贴板
代码:
rem @ECHO OFF
FOR /R %%f IN (_svn) DO IF EXIST "%%f" (
    ATTRIB -h "%%f"
    RENAME "%%f" .svn
    ATTRIB +h "%%~pf\.svn"
)
只需将相应的脚本文件拷到要变更的工作拷贝根目录下,然后在图形界面下直接双击执行就可以了。
脚本所在的路径及其所有子路径下的“.svn”都会被自动替换成“_svn”。

注:也许你在执行renamedotsvn.bat之后,虽然可以重新取回对项目的版本控制,但那些overlay绿色角标仍然没有刷新出来。
解决问题的办法是kill掉你的TSVNcache.exe,然后点击F5刷新,以重新启动TSVNcache,看,角标又出现了:)

注2:开启TSVNchche.exe的任务栏图标的方法:在注册表中新建HKCU\\Software\\TortoiseSVN\\CacheTrayIcon变量,类型DWORD,取值为1。它允许你来优雅地关闭TSVNCache,而不是在进程列表里kill掉它。(托盘图标可以显示当前已缓存了的文件夹数目)
原文地址:https://www.cnblogs.com/zengxlf/p/1490550.html