锁定老帖子 主题:SVN小文件清除脚本
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-12
隐士以前用惯了ClearCase,换到SVN有点不习惯。ClearCase下面的文件都可以直接Copy出来用,SVN下面的就麻烦了,每个目录下面一个.svn子目录,当你要把项目在Check In前拿去别用时,你就体会到你的项目不是一个项目,此刻SVN灵魂附体令你感觉别扭,当然,Check In后可以用SVN的Export来导出一个干净的项目。不爽,隐士整了个Python脚本,清除这些垃圾。 闲话不多,看脚本: python 代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-12
为何要自己实现一个walk(),而非使用 os.walk() 函数?
|
|
返回顶楼 | |
发表时间:2007-02-12
因为os.walk()不合要求,如果我要清除我所有进入SVN的项目里面的这类目录,文件、目录总量可能是几十万个,os.walk()比我的这个实现要慢一点,且无法进行多线程优化性能。我的这个,可以用多线程遍历和删除,没试过不知道性能能强多少。
下面是一个小测试,同样遍历我机器上的一个目录,里面有14116个目录,oswalk耗时平均比mywalk多近一秒。 引用 D:\temp>python mywalk.py 14116 0:00:17.922000 D:\temp>python oswalk.py 14116 0:00:18.844000 源码如下: oswalk.py import os from datetime import datetime path="D:\\program" t1=datetime.now() count=0 for dirpath, dirnames, filenames in os.walk(path): count+=1 #print "%s/%s/%s" %(dirpath, dirnames, filenames) print count t2=datetime.now() print t2-t1 mywalk.py import os, stat from datetime import datetime def walk(path): count=1 for item in os.listdir(path): subpath=os.path.join(path, item) mode=os.stat(subpath)[stat.ST_MODE] if stat.S_ISDIR(mode): count+=walk(subpath) return count path="D:\\program" t1=datetime.now() print walk(path) t2=datetime.now() print t2-t1 |
|
返回顶楼 | |
发表时间:2007-02-12
svn有一个export命令,就是导出干净的目录和文件用的。
|
|
返回顶楼 | |
发表时间:2007-02-12
limodou 写道 svn有一个export命令,就是导出干净的目录和文件用的。
所言即是,这个命令不错,有时候并不是项目目录里面的所有文件都加入了version control,此刻该命令有点鸡肋了,索性直接copy,用这个删.svn目录,挺好。 SVN Document 写道 Name svn export — Export a clean directory tree. Synopsis svn export [-r REV] URL[@PEGREV] [PATH] svn export [-r REV] PATH1[@PEGREV] [PATH2] Description The first form exports a clean directory tree from the repository specified by URL, at revision REV if it is given, otherwise at HEAD, into PATH. If PATH is omitted, the last component of the URL is used for the local directory name. The second form exports a clean directory tree from the working copy specified by PATH1 into PATH2. All local changes will be preserved, but files not under version control will not be copied. |
|
返回顶楼 | |
发表时间:2007-02-12
这个用shell 写的话,更简便吧.
|
|
返回顶楼 | |
发表时间:2007-02-12
simohayha 写道 这个用shell 写的话,更简便吧.
一直紧跟python,shell编程涉入不深,只会最简单的 windows上面貌似shell玩不转啊,要整vbs,不熟。 |
|
返回顶楼 | |
发表时间:2007-02-12
一行shell命令搞定
find . -type f -iname ".svn" -exec rm -rf {} \; |
|
返回顶楼 | |
发表时间:2007-02-12
robbin 写道 一行shell命令搞定
find . -type f -iname ".svn" -exec rm -rf {} \; 可惜在windows下,莫非cygwin也有类似的玩意? |
|
返回顶楼 | |
发表时间:2007-02-12
robbin 写道 一行shell命令搞定
find . -type f -iname ".svn" -exec rm -rf {} \; 应该是 -type d 吧,windows下可以用cygwin |
|
返回顶楼 | |