`

清除svn信息文件的python代码

阅读更多
写了一个简单的脚本来清除.svn文件夹。从svn代码仓库得到的源代码,在每一个目录及了目录下都有一个名为.svn文件夹。当想将svn下载的代码导入到其它project中时,就需要将svn相关信息文件删除掉,得到一份干净的代码。

如下注事点:
1.遍历目录及子目录,如果发现有名为.svn的文件夹,就将它删除。os.path.walk()来遍历目录,os.remove(path)删除文件,os.rmdir(path)删除文件夹。
2. 在删除文件之前,需要去掉只读属性:os.chmod(path, st_mode | stat.S_IWRITE | stat.S_IWGRP | stat.S_IWOTH)


# script to clean .svn folder
import os, os.path
import stat

BASE_FOLDER = r'C:\Development\workspace-3.6\ESI_back'

class Walker():
	def __init__(self, begin_path, rm_name):
		self.begin_path = begin_path
		self.rm_name = rm_name

	def going(self):
		os.path.walk(self.begin_path, self.visit, self.rm_name)

	def visit(self, arg, dirname, names):
		#if os.path.isabs(dirname):
		#	print 'absolute pathname: ', dirname
		for e in names:
			abs = os.path.join(dirname, e)
			if e == arg and os.path.isdir(abs):
				#print "Removing: ", abs
				self.rm_force(abs)
				#print "done"

	def rm_force(self, path):
		if os.path.lexists(path):
			#if path is readonly, should remove "readonly"
			self.un_readonly(path)
			if os.path.isfile(path):
				print 'Removing file: ', path
				os.remove(path)
			elif os.path.isdir(path):
				names = os.listdir(path)
				for name in names:
					abs = os.path.join(path, name)
					self.rm_force(abs)
				print 'Removing folder: ', path
				os.rmdir(path)
			else:
				os.unlink(path)
		else:
			print 'NOT EXISTS: ', path
	def is_readonly(self, path):
		st_mode = os.stat(path).st_mode
		#return st_mode == 33060
		return st_mode & stat.S_IWRITE != stat.S_IWRITE
		
	def un_readonly(self, path):
		st_mode = os.stat(path).st_mode
		os.chmod(path, st_mode | stat.S_IWRITE | stat.S_IWGRP | stat.S_IWOTH) #146
		#os.chmod(path, 33206)


if __name__ == '__main__':
	if not os.path.isdir(BASE_FOLDER):
		print 'Not a folder: ', BASE_FOLDER
		exit
	walker = Walker(BASE_FOLDER, '.svn')
	#f = r't/t.txt'
	#print walker.is_readonly(f)
	#walker.un_readonly(f)
	#print walker.is_readonly(f)

	#walker.rm_force('C:\\TEMP\\zhouvi2')
	walker.going()


分享到:
评论

相关推荐

    SVN清除.svn的python代码

    ### SVN清除.svn的Python代码解析与知识点 在软件开发领域,版本控制系统如Subversion(SVN)扮演着至关重要的角色,它帮助开发者们管理源代码的修改历史,实现多人协作开发。然而,在某些场景下,例如将项目迁移至...

    SVN版本控制清除工具

    - 私密信息:在共享文件或发布代码时,.SVN目录可能包含敏感信息,如提交者身份,不应公开。 - 非SVN项目:如果你不再使用SVN对某个项目进行版本控制,删除.SVN子目录可将项目转换为非受控状态。 3. 自己编写代码...

    python 文件实用包

    本文将深入探讨“python 文件实用包”所涵盖的四个主要功能:批量重命名、清除SVN相关文件、文件内容查找与替换以及按规则批量删除文件或目录。 1. 批量重命名: 在日常工作中,我们经常需要对大量文件进行重命名,...

    清除.svn文件夹

    5. **自动清除工具**:可以编写脚本,比如bash、Python或批处理文件,遍历指定目录下的所有子目录,查找并删除.svn文件夹。 6. **注册表文件**:`.reg`文件用于导入或导出Windows注册表项,谨慎使用,因为它可以...

    删除目录下所有svn相关的文件夹

    在本地工作目录中,SVN创建了一些特殊的文件和目录,如`.svn`,它们存储元数据,用于标识文件的版本状态和与其他用户的同步信息。 当我们说到"删除目录下所有svn相关的文件夹",我们通常是指清理不再需要的`.svn`...

    svn_diff_excel V1.0

    svn diff命令用于比较两个版本之间的差异,通常用于查看代码或文本文件的变化。然而,当涉及到像Excel这样的二进制文件时,传统的文本比较方法往往无法正确识别和显示差异。svn_diff_excel V1.0插件弥补了这一不足,...

    递归删除.svn

    标题中的“递归删除.svn”指的是在编程或文件管理操作中,如何使用递归方法来删除一个项目或目录下的所有.SVN子目录。.SVN是Subversion版本控制系统的一个隐藏目录,它存储了版本控制的相关信息。在某些情况下,用户...

    win10下SVN客户端执行Cleanup也不能成功,解决问题包

    4. **清除临时文件**:临时文件有时会干扰SVN的操作,脚本可以清理这些临时文件以排除干扰。 5. **处理冲突**:如果有未解决的冲突,脚本可以尝试自动合并或标记冲突文件以便后续手动处理。 6. **更新到最新版本**:...

    svn服务,excel数据库导入,tomcat相关.pdf

    在 Linux 系统中,网络配置文件通常位于 `/etc/sysconfig/network-scripts/` 目录下,比如 `ifcfg-eth0` 文件,用于存储网卡的 IP 地址等配置信息。对于 IP 配置的管理,可以使用 `iptables` 命令来设置防火墙规则...

    生成数据说明文档1

    本文档旨在详细介绍一个特定的工具链,用于从Excel文件导出CSV格式文件,并进一步处理这些文件来生成Unity项目中的代码和数据文件。该过程涉及到Python脚本的编写与执行、Unity项目的配置以及与版本控制系统(如SVN...

    eric6-19.9.zip

    《Eric6:Python开发利器与汉化包详解》 ... Eric6的汉化版不仅消除了语言障碍,还通过其丰富的功能和友好的界面,为Python开发者提供了一个高效的开发环境。无论是初学者还是经验丰富的程序员,都能从中受益。

    sourceInsight v3.5汉化

    SourceInsight构建了完整的文件索引,允许用户通过关键字快速搜索整个项目中的代码,找到所需的信息,大大缩短了查找时间。 **5. 代码分析** SourceInsight可以对代码进行静态分析,提供潜在问题的警告,如未使用的...

    Source Insight(附汉化,推荐

    它支持多种编程语言,包括 C、C++、Java、Python 等,并且提供了丰富的功能,帮助程序员高效地理解和管理代码库。Source Insight 的汉化版本使得中文用户在使用过程中能更加流畅地阅读和理解界面提示,提高了工作...

    eclipse_mars2.rar

    内置SVN插件消除了外部安装和配置的麻烦,使得版本控制功能无缝融入到开发流程中。 其次,"基本插件都有"意味着Eclipse Mars 2预装了众多常用开发工具和插件。这些插件可能包括Java开发工具(JDT)、透视图管理器、...

    source insight4.0

    Source Insight 4.0 提供了丰富的语言支持,包括但不限于C、C++、Java、Python、Perl等,它能自动识别代码语法并高亮显示,有助于快速理解代码结构。同时,它的智能跳转功能允许用户快速定位到函数定义、变量声明...

    pydev

    PyDev还提供了一些实用工具,如代码分析和重构工具,帮助开发者改进代码结构和消除潜在问题。它的多视图界面使得同时查看和编辑多个文件变得轻松。此外,PyDev还支持自定义快捷键和工作流,可以根据个人习惯定制开发...

    gVim中文手册

    gVim集成了对Git、SVN等版本控制工具的支持,可以查看文件差异、提交、回退等。`:Gdiff`命令用于在Git仓库中比较文件差异。 **总结** gVim中文手册详细介绍了gVim的各项功能和操作,无论是初学者还是高级用户,都能...

    eclipse插件版,适用于TC开发

    使用这样的定制版Eclipse,可以极大地提高开发团队的生产力,因为它消除了设置和集成的复杂性,让开发者可以更快地专注于编写和测试代码。 总结一下,"eclipse插件版,适用于TC开发"是专门为与TeamCity协同工作的...

    webrtc教程

    - 运行 gclient.py 脚本来指定获取 Chromium 某个版本的代码,并执行 `gclient sync` 来同步代码,期间会利用另一个工具 GYP 生成相应的工程文件。 **1.1.6 具体使用例子:** 1. **安装工具:** 安装 Git 和 Depot...

    Eclipse使用入门教程

    它还支持插件系统,通过安装各种插件可以扩展其功能,如支持其他编程语言(如C++、Python等)、版本控制工具集成(如Git、SVN)以及项目管理工具等。 Eclipse的使用还包括工作空间(Workspace)的概念,这是一个...

Global site tag (gtag.js) - Google Analytics