当前位置: 代码迷 >> CVS/SVN >> 驱除SVN文件
  详细解决方案

驱除SVN文件

热度:1879   发布时间:2013-02-26 00:00:00.0
清除SVN文件

多种办法:

当使用了svn版本控制系统后每个目录下都会有一个.svn目录存在,开发完当交付产品或者上传到服务器时一般要把这些目录删除,这里总结了一下在linux和win下的办法。

一、在linux下

删除这些目录是很简单的,命令如下 find . -type d -name ".svn"|xargs rm -rf

或者

find . -type d -iname ".svn" -exec rm -rf {} \;

全部搞定。

二、在windows下用以下法子:

1、在项目平级的目录,执行dos命令: xcopy project_dir project_dir_1 /s /i
2、或者在项目根目录执行以下dos命令 for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
其实第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。

3、加注册表

Jon Galloway提供了一段注册表代码,可以将”Delete SVN Folders”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。Works just great!

代码为:

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\command]@=”cmd.exe /c \”TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \”%1\” %%f IN (.svn) DO RD /s /q \”%%f\” \”“将这段代码保存为一个.reg文件,双击确认导入注册表即可。

?

?

==========windows 下一可用完整脚本如下====================

@echo 工作目录是:& @chdir

@set source=:
@set /p source=确定要清除当前目录下的svn信息吗?[Y/Q]
@set "source=%source:"=%"

@echo off
if "%source%"=="y" goto clean
if "%source%"=="Y" goto clean
if "%source%"=="q" goto end
if "%source%"=="Q" goto end
goto end

:clean
for /d /r %%c in (.svn) do if exist %%c (rd /s /q "%%c" & @echo 删除目录%%c)

@echo "当前目录下的svn信息已清除"
pause

:end
[Project]
path=C:\Documents and Settings\Administrator\桌面\
DeclaredSymbolFile=D:\Program Files\
Relative=1
makeFile=
exeName=

?=============================================================

?

=========linux中编辑的bat windows脚本不能再windows下运行?=============

提示:如果你在linux的编辑器中 把这些复制进某个.bat ,比如 x.bat

然后,你再把这个 x.bat 拷贝到 windows 下来执行的话,是没法执行的!!!

为什么呢?

是因为两个原因:

1. windows 和linux 的文本文档的换行方式不一样

2. 编码不一样。linux下很多编辑器(如vi)默认是utf-8的编码。而windows下默认是ANSI 编码!

?

你可以选择把 x.bat在windows下用 notepad++等编辑器转换为 ANSI的编码(步骤 :菜单-->格式-->“转换为ANSI编码格式”)。

然后,双击x.bat就可以执行了。

?

?

?

?

?


删除SVN版本信息行之有效的办法? 2011-05-18 17:31:20|? 分类: SCM |? 标签: |字号大中小 订阅 .

本节主要讲解一下删除SVN版本信息,主要针对Linux和Windows下删除,欢迎大家一起来学习,下面我们就来看一下删除SVN版本信息的具体方法吧,希望通过本文的学习你的知识面能有所提升。
在项目开发和日常文档管理时,用到了SVN,由于要把一些文档发给同事,这时想删除SVN版本信息文件,于是上网在SVN中文论坛找到了一份资料:

一、在linux下
删除这些目录是很简单的,命令如下
find.-typed-name".svn"|xargsrm-rf或者find.-typed-iname".svn"-execrm-rf{}\;


二、在windows下用以下法子:
1、在项目平级的目录,执行dos命令:
xcopyproject_dirproject_dir_1/s/i
2、或者在项目根目录执行以下dos命令
for/r.%%ain(.)do@ifexist"%%a\.svn"rd/s/q"%%a\.svn"
其实第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。
3、添加注册表(亲自动手测试过)
可以将“快速删除SVN版本信息”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。
代码为:
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="快速删除SVN版本信息"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe/cD:\工具\批处理文件删除SVN版本信息.bat"
将这段代码保存为一个.reg文件,双击确认导入注册表中不完整,后来自己手工添加。注意:文件“批处理文件删除SVN版本信息.bat”不能放在有空格的文件夹下,确认删除时请看一下当前目录不要删除不该删的目录下的SVN版本信息。不知道怎么改进“cmd.exe/cD:\工具\批处理文件删除SVN版本信息.bat”。


批处理文件删除SVN版本信息.bat文件内容如下:
@echooff
echo***********************************************************
echo删除SVN版本信息
echo***********************************************************
:start
::启动过程,切换目录
:setpwd=%cd%
:cd%1
echo工作目录是:&chdir
:input
::获取输入,根据输入进行处理
setsource=:
set/psource=确定要清楚当前目录下的.svn信息吗?[Y/N/Q]
set"source=%source:"=%"
if"%source%"=="y"gotoclean
if"%source%"=="Y"gotoclean
if"%source%"=="n"gotonoclean
if"%source%"=="N"gotonoclean
if"%source%"=="q"gotoend
if"%source%"=="Q"gotoend
gotoinput
:clean
::主处理过程,执行清理工作
@echoon
@for/d/r%%cin(.svn)do@ifexist%%c(rd/s/q%%c&echo删除目录%%c)
@echooff
echo"当前目录下的svn信息已清除"
gotoend
:noclean
::分支过程,取消清理工作
echo"svn信息清楚操作已取消"
gotoend
:end
::退出程序
cd"%pwd%"
pause。

?

?

?

?

?

?

SVN是我认为目前最方便的版本管理体系。我最早一次接触版本管理是2004年,当时学校BBS的代码要求用CVS管理;第二次亲密接触是在2006年,当时公司的代码使用Eclipse+CVS管理;而第一次使用SVN则是在2007年的一个封闭开发项目。

我十分喜欢SVN的方便,无论是在Linux下的命令行操作还是在Windows下的资源管理器插件,都十分简易。而且 code.google.com也支持SVN来供我们发布、维护开源项目(例如我的WordPress主题TES)然而,久而久之,SVN文件夹下会有许多.svn的“meta数据”。这些数据久而久之会带来不少麻烦。尤其是基于资源管理器交互的Windows系统。

今天看了Jon Galloway的一个注册表脚本,十分方便,分享如下:

建立一个文本文件,取名为kill-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\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件了:

?

本文来自:http://www.awflasher.com/blog/archives/1585

?

?

?

?

?

?

我们在工程的协作开发过程中,常用的是 svn , 有时我们需要一个干净的 网站版本,没有 .svn 这些文件夹记录的版本传到服务器上使用,自己一个个去文件删除的话也太累了,这时我们就用到以下功能,用cmd 批处理一键删除这些文件夹

可以写到注册表里,以后自己想清理哪个文件夹就直接 右键 -> 清除 .SVN文件夹 就可以了

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\清除SVN信息] @="清除 .SVN文件夹"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\清除SVN信息\command]
@="cmd.exe /c \"TITLE 清除 %1 中的.SVN文件夹 && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

?

将以上代码保存为 cleanSVN.reg ,在 Windows 环境下运行,然后在你要清理的文件夹上右键,就可以看到命令菜单,

不足的是这里没有 一个确认的提示信息,如果你有兴趣就加上一个提示信息吧,以免误清理,有时间我再加上吧,这些天一直在忙....

?

注:

如果你得到的菜单是乱码,那可能是你保存的 reg 文件是 UTF-8 的,重新保存为 ANSI 的再执行一次就可以了

?

---------------------------------------------------------------

2011-12-06 注:

最近发现 tortoise 的1.7 版的 .svn 都去掉了,只保留最上层有这个文件夹来记录文件信息!这样的话,以上步骤就用不到了

?

?

?

?

?

使用svn进行版本控制,每个文件夹下都有.svn文件夹,有些项目在脱离svn版本控制之后,想删除项目中所有的.svn文件夹,可用下面的方法进行快速删除:

在桌面上建立一个文本文件,取名为kill-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\command]
@=”cmd.exe /c \”TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \”%1\” %%f IN (.svn) DO RD /s /q \”%%f\” \""

保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下(包括子文件夹)所有的.svn文件夹。

删除完成后,为了避免误操作,不小心把正处于版本管理中的.svn文件夹删除,最好把刚才的注册信息删除。删除方法是,打开注册表(在运行中用 regedit命令),找到[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell \DeleteSVN] ,把DeleteSVN这个项删除,即可。

eclipse编译去除svn文件夹

使用Eclipse编译文件后,classes文件中总是有.svn的文件夹,这些文件没有什么用,而且影响build的速度
“Project->Properties->Java Build Path”,右侧的面板中的”Source”选项卡,在Excluded中加入”**/.svn/**”,就可以将所有的svn文件排除在编译路径中了。

?

?

?

?

?


@echo on
color 2f
mode con:cols=80 lines=25
@REM
@echo 正在清理SVN文件,请稍后...
@rem 循环当前目录及子目录下所有的SVN文件
@rem for /r . %%a in (.) do @if exist "%%a\.svn" @echo "%%a\.svn"
@for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
@echo 清理完毕!
@pause

  相关解决方案