EMACS & 程序 编程点滴...

天下难事必作于易,天下大事必作于细

Lastupdated: 2011-07-08

开发工具

TOPSVN(Subvesion) 笔记(命令行)

TOP忽略不需要的文件

svn st, svn up时不需要理会的中间文件

1
2
3
4
5
6
7
# 添加要忽略的文件后缀名
svn propedit svn:ignore xxx(目录)

svn --editor-cmd vi propedit svn:ignore (目录)

# 删除该属性
svn propdel svn:ignore

TOP查看本地文件属性

1
2
3
svn st -u ; 与server上的版本比较,而不只是显示本地更新

svn di -rHEAD file ; 比较本地file与最新server版本的差异

TOP解决冲突

同一文件的不同部分冲突
1
2
svn up
svn ci
同一文件中相同部分冲突
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 方法1
svn up
手工修改冲突部分
svn resolved
svn ci

# 方法2 (丢弃本地的修改)
svn up
svn revert
svn up

# 方法3 (丢弃server上的)
svn up
cp file.mine file.org
svn resolved

TOP查看具体版本中的改动日志

1
svn log --verbose file

TOP显示逐行历史

1
svn blame file

TOP移除已提交的改动(恢复以往版本)

1
2
3
4
5
svn merge -r HEAD:999  file/dir # 最新版→r999
svn ci

svn merge -r 777:666 file/dir # r777→r666
svn ci

TOPsvn + find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# merge后排除不需要上传的部分
$ find . -type d -name build | xargs -n1 svn revert -R


# 分支做成
$ svn mkdir -m "Create Branch folder"  xxxx/software/branches/Iterations/??
$ svn cp -m "Make ?? Branch(rev: XXX)." xxxx/subversion/software/trunk/xxx xxxx/subversion/software/branches/Iterations/??/


# 检索时排除所有版本管理目录
$ find . \( -type d \( -name '.svn' -o -name 'CVS' -o -name '.git' \) -prune \) -o -print

# 只是使用SVN
$ find . \( -name '.svn' -prune \) -o -print


# 显示除版本管理目录外所有文件
$ find . \( -type d -name '.svn' -prune \) -o \( -type f -print \)

# 显示除版本管理目录外所有目录
$ find . \( -type d -name '.svn' -prune \) -o \( -type d -print \)

# 显示除版本管理目录外指定文件
$ find . \( -type d -name '.svn' -prune \) -o \( -name "GNUmakefile" -type f -print \)
$ find . \( -type d -name '.svn' -prune \) -o \( -name "*.mk" -type f -print \)
$ find . \( -type d -name '.svn' -prune \) -o \( -name "*.[ch]" -type f -print \)

# 复数指定的场合需要用 ( )
$ find . \( -type d -name '.svn' -prune \) -o \( \( -name "*.[ch]" -o -name "*.[ch]pp" \) -type f -print \)

# 文件检索结果的状态
$ find . \( -type d -name '.svn' -prune \) -o \( \( -name "*.[ch]" -o -name "*.[ch]pp" \) -type f -print0 \) | xargs -0 -n1 svn status

# 检索所有空目录
$ find . \( -type d -name '.svn' -prune \) -o \( -type d -print0 \) |xargs -n1 -0 -iX sh -c 'if [ "$(ls -aC "X")" = ".  ..  .svn" ];then echo'

# xargs 中使用'|'管道 (使用ksh)
# 检索所有的rpm文件并解开
$ find . \( -type d -name '.svn' -prune \) -o \( -name "*.rpm" -type f -print \) | xargs -i ksh -c 'rpm2cpio {} | cpio -id'

# 打包修改的未提交的源代码(由svn管理)
$ svn st | sed /^?/d | sed 's/M      //g' | xargs -I {} zip target.zip {}

#svn add
function svnadd() { svn st|grep '^?'|awk '{print $2}'|xargs svn add; }

#svn del
function svndel() { svn st|grep '^!'|awk '{print $2}'|xargs svn del; }

#delete .svn
function delsvn() { find ./ -name ".svn" -exec rm -fr {} \;; }
© www.yifeiyang.net
net tracking

                                                                                                 stats