小脚本——脱离SVN服务器的管理

不管是从事什么IT职业,SVN的使用几乎是必须的。今天呢遇到一个问题,我想让一个目录脱离svn的管理,找了一些办法,说需要删除目录下的.svn目录,就可以解除管理(可能也有别的办法,但是我没找到),想一想这太麻烦了,所以想起了python,写个小的脚本,递归删除.svn目录

# -*- coding: cp936 -*-
import os
import stat

# 找到所有的.svn目录的全路径
def findSvnDir(root, svnList):
    fileList = os.listdir(root);

    for fileName in fileList:
        filePath = os.path.join(root, fileName);
        # 只有 filePath 是目录,并且目录名不为 .svn 才会递归
        if os.path.isdir(filePath) and (fileName != ".svn"):
            # 递归遍历
            findSvnDir(filePath, svnList);
        elif os.path.isdir(filePath) and (fileName == ".svn"):
            # 找到了 .svn 的目录
            svnList.append(filePath);

    return svnList;

def deleteSvnDir(root):
    fileList = os.listdir(root);

    for fileName in fileList:
        filePath = os.path.join(root, fileName);
        filePath = filePath.replace("\\", "/");
        # 判断找到的全路径是否是目录,如果是目录,则递归下去
        if os.path.isdir(filePath):
            deleteSvnDir(filePath);
            # 递归完成之后,到达这里 -> 说明当前的目录已经是空目录,则删除空目录
            if os.path.exists(filePath):
                os.chmod(filePath, stat.S_IWRITE);
                os.rmdir(filePath);
                print ("删除空目录: " + filePath);
        else:
            # 找到的是文件,删除文件
            if os.path.exists(filePath):
                os.chmod(filePath, stat.S_IWRITE);
                os.remove(filePath);
                print ("删除文件: " + filePath);

def deleteSvnMgrFile(root):
    svnList = [];
    findSvnDir(root, svnList);
    for fileName in svnList:
        deleteSvnDir(fileName);
        fileName = fileName.replace("\\", "/");
        if os.path.exists(fileName):
            os.chmod(fileName, stat.S_IWRITE);
            os.rmdir(fileName);
            print ("删除根目录: " + fileName);

if __name__ == '__main__':
    deleteSvnMgrFile("C:/Test");

这样一段简单的脚本,就可以脱离SVN的管理啦


完工 ...

之后会经常更新博客,把自己学习到的,和总结出来的,一起分享给大家(如有错误,请大伙们及时提出哦)

后期主推 —— C++设计模式

猜你喜欢

转载自blog.csdn.net/qq_23880193/article/details/77645024
今日推荐