svn过滤
㈠ visualSVN如何通过hook对提交文件进行过滤
打开控制台,在Repository属性中,找到hooks,添加 pre-commit 的 hook 处理示例:下面内容,对用户提交的内容进行检查,如果提交列表中有 pom.xml ,.project等文件,取消操作,显示提示信息。如果当前提交者是 admin ,则允许。这是 windows batch 批处理脚本。相关语句说明: 1、@echo off echo off是关闭回显,不显示命令内容。举例:如果你有一个test.bat,内容只有一行:dir,那执行后,输出的内容可能是:如果你在最前面加上echo off,那输出的内容可能是: 两者对比,你可以发现,dir这个命令在下面的示例中不再显示。 然而,由于加了一条语句 echo off,而这条语句在生效前,还是会回显的,所以你看到输出中有 c:\>echo off,是否有办法让这条语句也不显示呢?可以,我们只要在 echo off 前加上 @ 就可以了。那这样,我们的 test.bat 内容如下:这回执行的结果可能是: 2、setlocal 加上这条命令,避免批处理中对环境的改变影响到系统环境。如PATH 3、for 循环上面这句,要分解一下 for /f %%k in (‘command’) do stat /f 是指定循环类型,这是迭代,用得最多的循环。 %%k 是变量,每次取出的值都会保存在里面。 'command' 用单引号指明要执行的命令,命令处理后,在控制台输出的内容会被 for 命令一行行取出处理。 stat 要执行的处理,如果有多条,可以用()包含多行命令。再来看一下命令 svnlook author %REPOS% -t %REV% svnlook 是 visual svn 安装后,在其 bin 目录下的管理工具,可以查看Repository 的相关信息,如目录,日志等。具体可使用 svnlook help 查看帮助。 author 是查看用户名。 %REPOS% 是hook 传过来的Repository 路径,如 C:\myRepository\projectA -t%REV% %REV%是 hook 传过来的事务ID号,如果不加参数 -t 则可以指定版本号。使用这条命令,我们可以提取出当前提交者的用户名。 4、if "%user%" == "admin" goto admin 这是条件判断,如果用户名是 admin,使用 goto 语句,跳转到标签为 :admin 的地方,这在批处理的最后定义了。 5、for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i "pom.xml"') do @set /a count=%% k 这条语句与前面的 for 语句差不多,主要是 'command' 不同。 svnlook changed,这里可以列出所有提交的更新文件列表。 find /c /i "pom.xml 这是搜索语句,查找 pom.xml,/c 表示只显示搜索结果的条数, /i 表示不区分大小写在这两条语句的中间,是管道符 |,表示将前者输出的内容,作为后者处理的输入内容,也就是将所有提交的文件列表,交给 find 去搜索,并统计有多少个 pom.xml 在管道符的前面,有个转义符 ^,其作用是将这特殊的字符当前普通字符串,而不是命令。如果没加这个转义符,那这个 'command' 就不是一个整体了,以至语法出错。这里是将其作为字符串,而 for 命令则将这个字符串再作为命令来处理,避免语法嵌套,解析错误。(这一点,之前不知道,总是提示语法错误,花了我不少时间才找出问题所在。) 5、取消 commit 要取消commit ,只要返回非0的结果代码即可。如:exit 1 6、echo 请不要提交 "target" >& 2 前面没问题,是普通的 echo,后面是一个重定向。将输出的内容发送到错误输出的 stderr。 0 标准输入 stdin,键盘输入 1 标准信息输出 stdout,输出到控制台 2 标准错误输出 stderr,输出到控制台如果不加 >& 2,那svn客户端是看不到提示信息的,必须要输出到 2 另外,如果提示说:Failed to start 'xxx/pre-commit.cmd' hook,可能需要有控制面板,高级,服务里,将 visual svn的用户改为本地用户。 [plain] 1. @echo off 2. setlocal 3. set REPOS=%1 4. set REV=%2 5. set path="C:\Program Files\VisualSVN Server\bin\";%path% 6. 7. for /f %%k in ('svnlook author %REPOS% -t %REV%') do set user=%%k 8. if "%user%" == "admin" goto admin 9. 10. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i "pom.xml"') do @set /a count=%%k 11. if NOT %count% == 0 ( 12. echo 请不要提交 "pom.xml" >& 2 13. exit 1 14. ) 15. 16. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i ".project"') do @set /a count=%% k 17. if NOT %count% == 0 ( 18. echo 请不要提交 ".project" >& 2 19. exit 2 20. ) 21. 22. 23. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i ".classpath"') do @set /a count=%% k 24. if NOT %count% == 0 ( 25. echo 请不要提交 ".classpath" >& 2 26. exit 3 27. ) 28. 29. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i "target"') do @set /a count=%%k 30. if NOT %count% == 0 ( 31. echo 请不要提交 "target" >& 2 32. exit 4 33. ) 34. 35. for /f %%k in ('svnlook changed %REPOS% -t %REV% ^| find /c /i ".settings"') do @set /a count=%% k 36. if NOT %count% == 0 ( 37. echo 请不要提交 ".settings" >& 2 38. exit 4 39. ) 40. 41. :admin 42. exit 0 [plain] 1. C:\>test 2. 3. C:\>dir 4. 驱动器 C 中的卷是 WINXP 5. 卷的序列号是 8C4E-88D3 6. 7. C:\ 的目录 8. 9. 2011-04-28 08:55 Documents and Settings 10. 2011-12-14 09:32 Intel 11. 2012-03-03 10:26 Oracle 12. 2012-03-19 13:22 Program Files 13. 2011-12-14 09:34 2,122 RHDSetup.log 14. 2012-03-24 15:26 6 test.bat 15. 2012-03-09 16:44 WINDOWS 16. 2 个文件 2,128 字节 17. 5 个目录 41,156,255,744 可用字节 [plain] 1. C:\>test 2. 3. C:\>echo off 4. 驱动器 C 中的卷是 WINXP 5. 卷的序列号是 8C4E-88D3 6. 7. C:\ 的目录 8. 9. 2011-04-28 08:55 Documents and Settings 10. 2011-12-14 09:32 Intel 11. 2012-03-03 10:26 Oracle 12. 2012-03-19 13:22 Program Files 13. 2011-12-14 09:34 2,122 RHDSetup.log 14. 2012-03-24 15:28 17 test.bat 15. 2012-03-09 16:44 WINDOWS 16. 2 个文件 2,139 字节 17. 5 个目录 41,156,255,744 可用字节 [plain] 1. @echo off 2. dir [plain] 1. C:\>test 2. 3. 驱动器 C 中的卷是 WINXP 4. 卷的序列号是 8C4E-88D3 5. 6. C:\ 的目录 7. 8. 2011-04-28 08:55 Documents and Settings 9. 2011-12-14 09:32 Intel 10. 2012-03-03 10:26 Oracle 11. 2012-03-19 13:22 Program Files 12. 2011-12-14 09:34 2,122 RHDSetup.log 13. 2012-03-24 15:31 18 test.bat 14. 2012-03-09 16:44 WINDOWS 15. 2 个文件 2,140 字节 16. 5 个目录 41,156,255,744 可用字节 [plain] 1. for /f %%k in ('svnlook author %REPOS% -t %REV%') do set user=%%k
㈡ 如何实现TortoiseSVN日志过滤字符串的功能
Add命令只是告诉本地的“Working Copy”将该文件纳入版本管理, 并没有将删除文件时,选中要删除的文件或目录, 单击右键,TortoiseSVN-
㈢ c#在svn怎么过滤debug
1、在您使用SVN版本控抄制的根目袭录,右键,选择TortoiseSVN-->Settings
2、在弹出的对话框中,选择第一大项(此项是默认选择的),找到右边的Subversion-->Global ignore pattern , 在后面加入需要禁止的文件夹“debug”
3、设置完成之后,新建一个obj.txt , 测试通过,至此,使用 svn 过滤策略成功过滤掉文件夹,同样 过滤文件一样的,前提是需要您对正则表达式有一定的了解、
㈣ 怎么设置TortoiseSVN,实现文件夹过滤
方法/步骤
1,在您使用SVN版本控制的根目录,右键,选择TortoiseSVN-->Settings
2,在弹出的对话框中,选择第一大项(此项是默认选择的),找到右边的Subversion-->Global ignore pattern , 在后面加入需要禁止的文件夹,比如 bin ,就加入 *bin
obj 就加入 *obj ,注意,多个之间用单个空格(键盘上最长的个按键)分开。
3,设置完成之后,新建一个obj.txt , 测试通过,至此,使用 svn 过滤策略成功过滤掉文件夹,同样 过滤文件一样的,前提是需要您对正则表达式有一定的了解。
㈤ 如何在myeclipse编译时过滤掉svn目录
使抄用编译时过滤袭选项可以使编译时.svn不移到classess目录中,设置方法:
1、依次点击 "Project->Properties->Java Build Path";
2、右侧的面板中的"Source"选项卡,展开"source folder "后会看到"Included"、"Excluded"和"Native library location:";
3、在Excluded中加入"**/.svn/**",就可以将所有的svn文件排除在编译路径中了。
备注:有可能导致打jar包不好用。
㈥ eclipse 怎么取消svn过滤
第一步:建立一个名字叫做remove-svn-folders.reg的文本(先建立txt文件,然后粘贴内容后再修改文件名字),记得后缀要叫.reg。文本的内容为:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\com
mand] @="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
第二步:保存后,双击这个文件,此时再右键任何文件夹时都会出现一个“Delete SVN Folders”,点击这项,将会把此文件夹下包括子文件夹的.svn都给删除。如果项目想去掉svn,直接对此项目进行上面操作,一下子就将项目所有的.svn删除,即项目去除了svn。
第三步:也比较重要哦!如果项目已经去掉了svn,此时我们应该将右键的这项功能去掉预防以后不小心点击将不想去svn的项目去除了,这将会非常令人蛋疼。去除右键这项功能的方法为:打开注册
表(就是在命令行输入:regedit命令),然后在注册表里找到:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN],将DeleteSVN删除就可以了。
㈦ 如何设置eclipse svn对比过滤target
具体的做法就是在新建项目的时候,在第一次commit 到 SVN 之前,先在项目的根目录设置一个 SVN 属性(我在eclipse 3.3 中,SVN插件是subclipse 1.4.0):
在eclipse中,右键点击项目根目录 Team -> Set Property ... 然后在弹出的对话框中,Property name 选 “svn:ignore”,Property Content 输入:
target
.project
.classpath
.settings就ok了。
完了进入你的 SVN 的repository 里把已经commit进去的target目录和这两个文件(.classpath .project) 删除就可以了。
㈧ svn checkout 的时候怎么设置 只检出自己需要的文件忽略不需要的文件
这个问题解决了吗?最近也遇到了同样的问题
㈨ 怎么解决linux下svn过滤掉了.a等类型文件的问题
设置svn:ignore属性: 例如: svn propset svn:ignore *.class 过滤掉所有.class文件。
㈩ 怎么设置TortoiseSVN,实现文件夹过滤
在您使用SVN版本控制的根目录,右键,选择TortoiseSVN-->Settings
在弹出的对话框中,选择第一大项(此专项是默认属选择的),找到右边的Subversion-->Global ignore pattern , 在后面加入需要禁止的文件夹,比如 bin ,就加入 *bin
obj 就加入 *obj ,注意,多个之间用单个空格(键盘上最长的个按键)分开、
设置完成之后,新建一个obj.txt , 测试通过,至此,使用 svn 过滤策略成功过滤掉文件夹,同样 过滤文件一样的,前提是需要您对正则表达式有一定的了解、