以下摘自:《卓有成效的程序员》之自动化

转自:http://blog.csdn.net/spare_h/article/details/6677435

我经常会一次往Subversion里添加一批文件。在使用命令行做这件事时,你必须指定所有想要添加的文件名。如果文件不多的话这还不算太糟糕,但如果你要添加20个文件,那就费事了。当然你也可以用通配符,但这样一来就可能匹配到已经在版本控制之下的文件(这不会有什么损害,只不过会输出一堆错误信息,可能会跟别的错误信息混淆)。为了解决这个问题,我写了一行简单的bash命令:

  

svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add

  表4.3详细解释了这一行命令。

 

  我大概花了15分钟写出这条命令,然后用了它成百上千次。

****************************************************

这个自动化过程已经很完美了,一个“简单”的shell脚本,这是一个权威编写并使用了百上千次的脚本。

然后我在一个博客中看到这样一个脚本:

svn st|awk '{print $2}'|xargs svn add。

乍看之下觉得更加精炼,仔细看下就会发现这个脚本没有区分文件状态。所以完善了以下这个脚本:

svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add

这样,以后我可能使用这个脚本成百上千次。(当然这个脚本也没有考虑过滤掉不要添加的文件)

当你第三次做一件事情的时候,就应该考虑将其工具化,自动化!

名称
svn add — 添加文件、目录或符号链。 概要
SVN子命令add PATH...描述
文件、目录或符号链到你的工作拷贝并且预定添加到版本库。它们会在下次提交上传并添加到版本库,如果你在提交之前改变了主意,你可以使用svn revert取消预定。 选项
--targets FILENAME
--non-recursive (-N)
--quiet (-q)
--config-dir DIR
--no-ignore
--auto-props
--no-auto-props
--force 例子:
我们通过一个例子来看一下SVN子命令add,添加一个文件到工作拷贝:
$ svn add foo.c
A foo.c
当添加一个目录,svn add缺省的行为方式是递归的:
$ svn add testdir
A testdir
A testdir/a
A testdir/b
A testdir/c
A testdir/d
你可以只添加一个目录而不包括其内容:
$ svn add --non-recursive otherdir
A otherdir
通常情况下,命令svn add *会忽略所有已经在版本控制之下的目录,有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的--force递归到版本化的目录下:
$ svn add * --force
A foo.c
A somedir/bar.c
A otherdir/docs/baz.doc。SVN子命令add的用法介绍讲解完毕。

一次向svn中增加所有新增文件 svn add all new files【转】的更多相关文章

  1. 一次向svn中增加所有新增文件 svn add all new files

    svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add

  2. linux中增加swap分区文件的步骤方法

     一.swap交换分区 Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临 ...

  3. SVN中怎样忽略当前文件不提交

    场景 在使用SVN进行版本管理时,有时一些自动生成的文件比如证书等,在每台电脑上都会不同,如果将其提交,则会冲突. 怎样将指定的文件或者指定文件后缀的文件忽略提交. 注: 博客主页: https:// ...

  4. 〖Android〗查找Android中的/system/lib中增加的lib文件是否在apk文件中

    #!/bin/bash - #=============================================================================== # # F ...

  5. 往jdk/bin目录中增加tcnative-1.dll文件以后报错 Can't load AMD 64-bit .dll on a IA 32-bit platform

    开始时,运行Tomcat控制台报错: The APR based Apache Tomcat Native library which allows optimal performance in pr ...

  6. Windows鼠标右键新建中增加新建md文件

    1.新建一个文本文件,拷贝一下内容到其中: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.md\ShellNew] "Nu ...

  7. SVN中的常见错误(长期更新)

    一 svn中的简写含义. A:add,新增 C:conflict,冲突 D:delete,删除 M:modify,本地已经修改 G:modify and merGed,本地文件修改并且和服务器的进行合 ...

  8. 如何彻底删除SVN中的文件和文件夹(附恢复方法)

    在SVN中如果删除某个文件或文件夹也可以在历史记录中进行找回,有的时候需要彻底删除某些文件,即不希望通过历史记录进行恢复,需要在服务器上对SVN的数据进行重新整理 这里假设SVN项目的目录为 /dat ...

  9. thinkjs 中增加过期时间

    使用thinkjs搭建的项目需要实现一小时后过期的功能:于是对比了新建项目与原有项目的不同之处:         官网中给的介绍:https://thinkjs.org/zh-cn/doc/2.2/a ...

随机推荐

  1. php+Mysql 页面登录代码

    登录界面设置: <?php/** * Created by xx. * User: msi * Date: 2017/10/26 * Time: 18:12 *///session每次用之前都要 ...

  2. android4.1 Wifi 浅析

    简单分析下wifi相关类,首先了解几个主要概念 AsyncChannel 简单理解: AsyncChannel,就是借助Messenger 机制,让两个不同的handler之间进行通信. AsyncC ...

  3. PAT 1065 单身狗

    https://pintia.cn/problem-sets/994805260223102976/problems/994805266942377984 “单身狗”是中文对于单身人士的一种爱称.本题 ...

  4. java线程(5)——线程池(上)

    引入: 在之前的例子中,我们需要使用线程时就直接去创建一个线程,这样既不浪费资源又十分方便.但如果我们需要创建多个并发的线程,而且短时间执行就结束了,如果还用之前的方式,就会大大降低效率和性能了. 因 ...

  5. perf原理再看

    vim ./arch/x86/kernel/hw_breakpoint.c perf如何控制采样的频率 perf采样不同的事件,得到的不是一样 cycles: 向PMU中增加不同的函数,增加不同 使用 ...

  6. poj 2965 The Pilots Brothers' refrigerator (dfs)

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17450 ...

  7. 【题解】NOI2009二叉查找树 + NOIP2003加分二叉树

    自己的思维能力果然还是太不够……想到了这棵树所有的性质即中序遍历不变,却并没有想到怎样利用这一点.在想这道题的过程中走入了诸多的误区,在这里想记录一下 & 从中吸取到的教训(原该可以避免的吧) ...

  8. [Leetcode] Remove duplicates from sorted list 从已排序的链表中删除重复元素

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  9. BZOJ3533 [Sdoi2014]向量集 【线段树 + 凸包 + 三分】

    题目链接 BZOJ3533 题解 我们设询问的向量为\((x_0,y_0)\),参与乘积的向量为\((x,y)\) 则有 \[ \begin{aligned} ans &= x_0x + y_ ...

  10. Intellij Idea debug 远程部署的的tomcat项目

    web项目部署到tomcat上之后,有时需要打断点单步调试,如果用的是Intellij idea,可以通过如下方法实现: 开启debug端口,启动tomcat 以tomcat7.0.75为例,打开bi ...