- 浏览: 3048027 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
我的老笔记本上有个目录专门用来放感兴趣的SVN版本库,像是IronRuby、Parrot、Ruby之类。版本库的数量不少,而我以前一直都是在浏览器里手工去点击每个版本库的目录去做更新。太费事了,不爽。
于是刚才想找办法让这过程更自动化一些。不过发觉TortoiseSVN在无干预命令行批处理方面还是不太适合(毕竟它是个GUI客户端),所以跑到SVN官网去下载了Subversion 1.4.6,安装。装好之后在命令行试了一下操作,没问题。
接下来就是如何自动化的问题了。我那些版本库不都是在同一嵌套层上的,有的深有的浅。例如说这样:
星号标注的是要更新的目标。怎么办呢?只好递归搜索了。反正能找到带有".svn"目录的最上层目录就被认为是版本库目录,以它为标准来判断是不是要更新的目标;如果是目录但不是目标则遍历子目录来寻找目标。
于是简单的写了这样的Ruby脚本:
把这个脚本放在我的repository目录里,它就能帮我更新整个目录里所有的SVN版本库。当然,递归搜索的效率不是太好——如果有任何一个目录里没有任何子目录是SVN版本库,这脚本恐怕要花上好长时间才能“知道”这点。要想快点的话可以改进上面的代码,让locate_and_update搜索一个内容是目录索引的配置文件,如果不存在的话就以深度优先搜索创建一个索引。那样就不用每次都对整个repository目录做全面搜索了。如果版本库的数量或者位置发生了改变,只要把那个索引文件删除它就应该重新生成索引,也不费事。
要完善的话还可以加点参数什么的,也可以做非交互式处理(传--non-interactive参数给svn)。不过上面的代码已经足够满足我自己的需求了,我的repository目录里全是SVN版本库,暂时没把git和Mercurial相关的东西放进来……所以懒得多写脚本了 ^ ^
于是刚才想找办法让这过程更自动化一些。不过发觉TortoiseSVN在无干预命令行批处理方面还是不太适合(毕竟它是个GUI客户端),所以跑到SVN官网去下载了Subversion 1.4.6,安装。装好之后在命令行试了一下操作,没问题。
接下来就是如何自动化的问题了。我那些版本库不都是在同一嵌套层上的,有的深有的浅。例如说这样:
repository + IronRuby * trunk * Nemerle + Ruby * Ruby_1_8 * trunk
星号标注的是要更新的目标。怎么办呢?只好递归搜索了。反正能找到带有".svn"目录的最上层目录就被认为是版本库目录,以它为标准来判断是不是要更新的目标;如果是目录但不是目标则遍历子目录来寻找目标。
于是简单的写了这样的Ruby脚本:
#!/usr/bin/ruby def update_repo( path ) puts path system "svn up \"#{path}\"" end def locate_and_update( dir = "." ) entries = Dir.entries( dir ).reject do |item| item =~ /^\.(?:\.|git|hg)?$/ # remove ".", "..", ".git", ".hg" end if entries.include? ".svn" # if this is a repo update_repo dir # perform update else # if this isn't a repo entries.each do |e| # recursively search for repos path = "#{dir}/#{e}" locate_and_update path if File.directory? path end end end puts Time.now # show the time of update locate_and_update # start from the working directory
把这个脚本放在我的repository目录里,它就能帮我更新整个目录里所有的SVN版本库。当然,递归搜索的效率不是太好——如果有任何一个目录里没有任何子目录是SVN版本库,这脚本恐怕要花上好长时间才能“知道”这点。要想快点的话可以改进上面的代码,让locate_and_update搜索一个内容是目录索引的配置文件,如果不存在的话就以深度优先搜索创建一个索引。那样就不用每次都对整个repository目录做全面搜索了。如果版本库的数量或者位置发生了改变,只要把那个索引文件删除它就应该重新生成索引,也不费事。
要完善的话还可以加点参数什么的,也可以做非交互式处理(传--non-interactive参数给svn)。不过上面的代码已经足够满足我自己的需求了,我的repository目录里全是SVN版本库,暂时没把git和Mercurial相关的东西放进来……所以懒得多写脚本了 ^ ^
发表评论
-
字符串的一般封装方式的内存布局 (0): 拿在手上的是什么
2013-11-04 18:22 21489(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
RubyConf notes
2011-11-08 19:10 0symmetric coroutine Fiber#trans ... -
ShanghaiOnRails第八次线下活动——你不需要知道的Ruby实现
2010-11-12 15:39 2841上个月底正好赶上参加了ShanghaiOnRails 第八次线 ... -
JRuby的运行模式
2010-11-01 11:21 0// 老的JRuby还是用org.jruby.evaluato ... -
你不需要知道的Ruby草稿
2010-10-27 11:25 0一些Ruby实现 Ruby 1.8 树遍历解释 Ruby 1 ... -
Ruby里的fiber/coroutine例子
2010-01-26 18:33 0Ruby 1.9开始支持fiber。与“fiber”一词的一般 ... -
JRuby使用技巧收集
2009-12-28 09:35 0java.lang.Thread.new { puts &qu ... -
特殊类型的eigenclass
2009-12-17 03:39 0Fixnum的实例没有eigenclass true、fals ... -
奇怪的参数
2009-12-08 02:25 0默认参数与闭包的组合 真正的问题不是只是默认参数看起来很诡异, ... -
MacRuby的执行模式
2009-12-07 07:41 0mailing-list macruby-devel http ... -
Rubinius的执行模型
2009-12-05 15:22 0Rubinius wants to help YOU make ... -
Ruby 1.8和1.9中String#hash的实现
2009-11-22 18:23 01.8 string.c int rb_str_hash(s ... -
To囧:拿你来测测Watir...
2009-11-21 22:38 3441iaimstar 写道@RednaxelaFX 你最近ruby ... -
[标题党] MagLev中GC类的真相……
2009-11-21 14:46 0注意到本文的标题:我是说“GC类”的真相,不是说GC的真相哦~ ... -
小试rubyzip的一个脚本
2009-11-17 20:42 3455呼,今天开始3天都是新人培训,总算可以抽点时间发一帖。 现在在 ... -
爬一下Google和百度看口碑对它们做的SEO效果如何
2009-11-09 00:27 0#!/usr/bin/env ruby require ... -
把Mechanize的html_parser改回到Hpricot
2009-11-08 14:45 3115记得我最初开始用Nokogir ... -
使用新的RubyInstaller
2009-11-07 02:37 0Hpricot的安装需要编译,需要devkit -
Ruby metaprogramming tech notes
2009-09-28 15:39 0class Builder def self.build ...
相关推荐
5. **SVN Delete**:在版本库中删除文件或目录,通常需要先`svn delete`,再`svn commit`。 6. **忽略文件**:如果不想让某些文件或目录受SVN控制,可以在`.svnignore`文件中添加相应的模式。 在实际工作中,我们...
【标题】:“Windows&Linux SVN自动化全备份&增量备份脚本” 在IT环境中,版本控制系统如Subversion(SVN)是团队协作开发的重要工具,它用于管理代码版本,跟踪文件和目录的更改。然而,为了确保数据的安全和可靠...
批量更新SVN仓库中的文件通常在以下场景中非常实用:大型项目、多模块开发、或者需要同步多个独立但相关的代码库时。这样可以节省时间,避免逐个目录手动更新的繁琐过程。 以下是一些关于svn批量更新的知识点: 1....
这个过程在团队协作中尤其重要,因为`.svn`目录包含的是个人工作空间的配置信息,而不是应该提交到版本库的内容。当共享代码仓库时,确保不包含这些目录可以减少冲突和不必要的混乱。 在实际应用中,你可能需要根据...
2. **隐藏的SVN文件和文件夹**:在SVN版本控制下的项目中,通常会包含一些隐藏的SVN元数据文件和文件夹,如`.svn`目录。这些文件包含了关于文件的状态、提交历史等信息,是版本控制的基础。 3. **为何要批量清空SVN...
在执行任何批量删除操作之前,务必备份重要的版本库,以防万一。并且,最好先在一个测试环境中尝试批量删除,确保一切按预期运行。 8. **协同工作**: 如果团队中还有其他成员在进行开发,批量删除可能会影响他们...
是指一组已配置好的权限配置文件和说明用于指导配置库的快速授权,应用权限模板的项目将会拥有相同的授权结构,根据版本管理工具不同授权模式分为Windows认证模式的授权模板和Subversion认证模式的授权模板两种。
标题提到的"批量删除SVN文件",指的是我们不再需要某些文件或目录,并希望一次性从版本库中移除它们,而不是逐一进行操作。这个过程涉及到SVN的`delete`命令,但手动操作会非常耗时,特别是当需要删除大量文件时。 ...
总之,SVN版本控制系统提供了强大的文件管理和协同功能,而清理.SVN子目录则是为了特定目的,如节省空间或保护隐私。通过编写脚本或使用专用工具,可以轻松实现这一操作。但一定要谨慎,确保在删除前理解其可能带来...
总结来说,删除SVN版本控制文件主要涉及识别和移除`.svn`目录,通过编写批处理脚本可以高效地完成这一任务。了解SVN工作副本的结构和批处理脚本的编写,对于日常的代码管理和维护工作具有实际意义。在实际工作中,...
批量删除SVN是指在项目工程中一次性移除多个文件或目录的SVN版本控制,这对于清理不再需要的旧版本或者重新组织代码仓库来说非常实用。下面我们将详细介绍批量删除SVN的操作步骤及相关知识点。 首先,了解SVN的基本...
5. **脚本的使用与调试**:使用脚本时,需要了解其运行环境,如操作系统、svn版本以及所需的权限。在执行前,先进行小规模的测试,以调试和优化脚本。一旦确认无误,即可应用于大规模的迁移任务。 6. **注意事项**...
这些.SVN文件是SVN版本控制系统的一部分,存储了项目文件的版本信息和元数据。在某些情况下,用户可能需要清理这些文件,例如在备份、迁移或者整理项目文件时。 描述 "批量删除SVN文件,使用方法:拷贝到版本控制...
这些`.svn`文件夹对于SVN的正常运行至关重要,但有时可能因为某些原因需要进行批量删除,例如清理磁盘空间或者在不关心版本历史的情况下快速复制项目。 "SVN_Deleter"是一款专门设计用来批量删除指定目录下的`.svn`...
Python SVN接口库大大简化了与SVN的交互,使得开发者无需离开Python环境就能管理版本控制,这对于自动化脚本或集成开发环境(IDE)插件来说非常有用。在实际开发中,结合其他Python库,如`os`和`shutil`,可以实现更...
然而,在某些情况下,例如项目转移、清理本地工作空间或更新到新的代码库时,可能需要批量删除项目中的SVN相关文件。本压缩包文件“批量删除项目中的SVN.rar”提供了这样的解决方案。 标题“批量删除项目中的SVN”...
`.svn`文件是Subversion的工作副本的一部分,它们包含了版本库的信息,包括每个文件的版本历史、状态以及与远程仓库的通信信息。当你在一个项目中使用SVN时,这些文件会自动创建并更新,帮助你进行版本控制操作,如...
批处理SVN文件是一种在命令行环境中批量处理Subversion(简称SVN)版本控制系统操作的方法。SVN是一种广泛使用的版本控制系统,它允许用户跟踪和控制文件和目录的变化,便于多人协作开发。批处理则是在Windows操作...
3. **使用命令行工具**:通过 SVN 的命令行客户端 `svn remove` 或 `svn delete` 命令,可以批量删除文件或目录及其版本控制信息。例如,`svn delete foldername --keep-local` 命令会删除文件夹`foldername`的版本...
标题中的“删除SVN无用信息”指的是在使用Subversion(SVN)版本控制系统时,可能会在项目中积累一些无用或不再需要的SVN元数据,如版本库中的临时文件、日志、属性信息等。这些信息可能占用硬盘空间,同时也使版本...