|
用svn也是不短的时间了,有喜有忧,其中导出也是个麻烦事
文件夹里很多不能上传的文件夹都是设置的忽略(数据库连接信息等,由于用的是公用svn服务器),导出的话是看不到的,直接拷贝带svn文件夹的源目录,占用空间又至少是有用文件的两倍大小。。。
于是次次搜索.svn然后删除
后来看到个添加鼠标右键菜单的reg代码,好用是好用,迷糊的时候手一滑就game over了。。。要检出一份然后手动去添加忽略文件。。。杀人了啊。。。
看网上用python脚本写svn清理的比较多,于是学着写了个,貌似网上的脚本都是针对linux的,这个windows版的也发出来,请多指教
# -*- coding: cp936 -*-
# 注明字符集
# file:clearsvn.py 删除svn目录下的所有svn文件
import os,win32con,win32api
#清除文件名头尾的引号
def trimpath(pathin):
#如果头部存在引号
if pathin[0] == '\"':
pathin = pathin[1:]
#如果尾部存在引号
if pathin[(len(pathin)-1)] == '\"':
pathin = pathin[:(len(pathin)-1)]
#返回清理首尾后的字串
return pathin
def clearsvn(path):
#列出子目录
filenames = os.listdir(path)
for singlefile in filenames:
pathfile = path + '\\' + singlefile
#子目录判断是否为svn文件夹
if os.path.isdir(pathfile):
if singlefile.find('.svn') != -1:
#是的话清理文件夹后删除文件夹
deltree(pathfile)
print "清理目录:" + pathfile
#修改属性,同linux下chmod
win32api.SetFileAttributes(pathfile, win32con.FILE_ATTRIBUTE_NORMAL)
#api删除空文件夹
os.rmdir(pathfile)
else:
#不是的话递归到下一层
clearsvn(pathfile)
def deltree(path):
filenames = os.listdir(path)
#遍历所有子目录和文件夹
for singlefile in filenames:
pathfile = path + '\\' + singlefile
#如果是文件夹的话递归清理
if os.path.isdir(pathfile):
print "清理目录:" + pathfile
#修改属性,同linux下chmod
win32api.SetFileAttributes(pathfile, win32con.FILE_ATTRIBUTE_NORMAL)
#递归到下一层
deltree(pathfile)
#api删除空文件夹
os.rmdir(pathfile)
#如果是文件的话则删除
if os.path.isfile(pathfile):
print "删除文件:" + pathfile
#修改属性,同linux下chmod
win32api.SetFileAttributes(pathfile, win32con.FILE_ATTRIBUTE_NORMAL)
#api删除文件
os.remove(pathfile)
if __name__=="__main__":
#提示用户输入目录路径
pathin = raw_input("拖放要删除文件所在目录到此:")
#清理字串首尾的引号
path = trimpath(pathin)
#确认文件夹
choose = raw_input("需要清理的文件夹为 [ " + path + " ] y/n?:")
if choose == 'y' or choose == 'Y':
#检查用户输入的目录是否存在,如果不存在则退出程序
if os.path.exists(path)==False:
print "输入的目录不存在!"
os._exit(1)
#遍历子文件夹进行删除
clearsvn(path)
print "清理完成!"
#运行结束暂停,显示友好信息
os.system('pause') |
|
|