热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxsvn命令

http:blog.csdn.netgexiaobaohelloworldarticledetails7752862http:www.cnblogs.comylqmfarchive

http://blog.csdn.net/gexiaobaohelloworld/article/details/7752862



http://www.cnblogs.com/ylqmf/archive/2011/09/13/2174429.html

http://blog.csdn.net/vincent17113/article/details/6265423:未整理参考文章

1,SVN简介

SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。SVN将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。

因为你的工作拷贝“同你系统上的文件和目录没有任何区别”,你可以随意修改文件,但是你必须告诉Subversion你做的其他任何事。例如,你希望拷贝或移动工作拷贝的一个文件,你应该使用svn copy或者 svn move而不要使用操作系统的拷贝移动命令

.svn目录包含什么?

工作拷贝中的任何一个目录包括一个名为.svn管理区域,通常列表操作不显示这个目录,但它仍然是一个非常重要的目录,无论你做什么?不要删除或是更改这个管理区域的任何东西,Subversion使用它来管理工作拷贝。如果你不小心删除了子目录.svn,最简单的解决办法是删除包含的目录(普通的文件系统删除,而不是svn delete),然后在父目录运行svn update,Subversion客户端会重新下载你删除的目录,并包含新的.svn。 

2,SVN常用命令

2.1、svn co:将文件checkout到本地目录

svn checkout path

简写:svn co path

说明:path是服务器上的目录

例如:svn co svn://192.168.1.1/pro/domain

2.2、svn add:往版本库中添加新的文件

svn add file

说明:不能直接使用 svn add * 命令,必须使用 “svn add * --force” 命令。--force参数只不过是驱使 svn 去检查一个子目录,而不管这个子目录是否已经纳入管理。

例如:svn add *.php(添加当前目录下所有的php文件)

2.3、svn ci:将改动的文件提交到版本库

svn commit -m “LogMessage” [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)

简写:svn ci -m ‘’

例如:svn ci -m “add test file for my test“ test.php

2.4、svn lock:加锁/解锁

svn lock -m “LockMessage” [--force] PATH

svn unlock PATH

例如:svn lock -m “lock test file“ test.php

2.5、svn up:更新到某个版本

svn update -r m path

简写:svn up

说明:svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

例如:svn up -r 200 test.php(将版本库中的文件test.php还原到版本200)

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Select: (p) postpone, (df) diff-full, (e) edit,  
  2.         (mc) mine-conflict, (tc) theirs-conflict,  
  3.         (s) show all options:  
  4. svn detects that theres a conflict here and require you to take some kind of action.  
  5.   
  6. (e)  edit             - change merged file in an editor               #直接进入编辑  
  7. (df) diff-full        - show all changes made to merged file          #显示更改至目标文件的所有变化  
  8. (r)  resolved         - accept merged version of file  
  9.   
  10. (dc) display-conflict - show all conflicts (ignoring merged version)  #显示所有冲突  
  11. (mc) mine-conflict    - accept my version for all conflicts (same)    #冲突以本地为准  
  12. (tc) theirs-conflict  - accept their version for all conflicts (same) #冲突以服务器为准  
  13.   
  14. (mf) mine-full        - accept my version of entire file (even non-conflicts)#完全以本地为准  
  15. (tf) theirs-full      - accept their version of entire file (same)    #完全以服务器为准  
  16.   
  17. (p)  postpone         - mark the conflict to be resolved later        #标记冲突,稍后解决  
  18. (l)  launch           - launch external tool to resolve conflict  
  19. (s)  show all         - show this list  

举例如下:

1,创建test.txt

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. test  
2,上传该文件,版本为revision3
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test>svn ci -m "making a starting point"  
  2. Sending        .  
  3. Sending        test.txt  
  4. Transmitting file data .  
  5. Committed revision 2.  
3,假设我们有User1和User2. 二者均从repository中update下载该文件,版本为revision2
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test>svn up  
  2. A    test.txt  
  3. At revision 2.  
4,User1修改文件test.txt
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. User1 is making a conflict test  
5,User1上传文件test.txt  版本为revision3
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test>svn ci -m "User1 starting a conflict"  
  2. Sending        .  
  3. Sending        test.txt  
  4. Transmitting file data .  
  5. Committed revision 3.  
6,User2修改文件test.txt
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. test User2 making a conflict  
7,User2上传文件test.txt,版本为revision4,遇到错误
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. svn: Commit failed (details follow):  
  2. svn: File or directory 'test.txt' is out of date; try updating  
  3. svn: resource out of date; try updating  
8,User2开始更新文件
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test>svn up  
  2. Conflict discovered in 'test.txt'.  
  3. Select: (p) postpone, (df) diff-full, (e) edit,  
  4.         (mc) mine-conflict, (tc) theirs-conflict,  
  5.         (s) show all options:  
  6. svn detects that theres a conflict here and require you to take some kind of action.  
9,User2选择‘df’,展开冲突的内容
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Select: (p) postpone, (df) diff-full, (e) edit,  
  2.         (mc) mine-conflict, (tc) theirs-conflict,  
  3.         (s) show all options: df  
  4. --- .svn/text-base/test.txt.svn-base    Tue Aug 10 10:59:38 2010  
  5. +++ .svn/tmp/test.txt.2.tmp     Tue Aug 10 11:33:24 2010  
  6. @@ -1 +1,3 @@  
  7. -test  
  8. \ No newline at end of file  
  9. &#43;<<<<<<< .mine &#43;test User2 making conflict&#61;&#61;&#61;&#61;&#61;&#61;&#61; &#43;User1 is making a conflict test>>>>>>> .r3  
10&#xff0c;User2选择‘e’&#xff0c;可编辑冲突的内容
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <<<<<<< .mine test User2 making conflict&#61;&#61;&#61;&#61;&#61;&#61;&#61; User1 is making a conflict test>>>>>>> .r3  
11&#xff0c;User2按如下方式编辑了冲突并保存&#xff1a;
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. User1 is making a conflict test User2 making conflict  
12&#xff0c;User2重新选择‘r’&#xff0c;表示resolved并被标记为G&#xff08;表示该文件冲突已被解决&#xff09;
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,  
  2.         (mc) mine-conflict, (tc) theirs-conflict,  
  3.         (s) show all options: e  
  4. Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,  
  5.         (mc) mine-conflict, (tc) theirs-conflict,  
  6.         (s) show all options: r  
  7. G    test.txt  
  8. Updated to revision 3.  
13&#xff0c;User2检查该文件状态
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test2>svn st  
  2. M       test.txt  
14&#xff0c;User2提交该文件&#xff0c;版本为revision4
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test2>svn ci -m "conflict resolved"  
  2. Sending        test.txt  
  3. Transmitting file data .  
  4. Committed revision 4.  
15&#xff0c;User2刚才也可以选择‘p’来延迟解决冲突
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,  
  2.         (mc) mine-conflict, (tc) theirs-conflict,  
  3.         (s) show all options: p  
  4. C    test.txt  
  5. Updated to revision 3.  
  6. Summary of conflicts:  
  7.   Text conflicts: 1  
16&#xff0c;这时会发现svn帮助建立了如下三个文件
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. 08/10/2010  11:44 AM                94 test.txt  
  2. 08/10/2010  11:44 AM                26 test.txt.mine  
  3. 08/10/2010  11:44 AM                27 test.txt.r2  
  4. 08/10/2010  11:44 AM                31 test.txt.r3  
  5. test.txt为包含User1与User2冲突的文件  
  6. <<<<<<< .mine test User2 making conflict&#61;&#61;&#61;&#61;&#61;&#61;&#61; User1 am making a conflict test>>>>>>> .r3  
test.txt.mine是User2的本地文件
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. test User2 making conflict  
test.txt.r2为原始reversion2的拷贝
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. test  
test.txt.r3为User1提交的reversion3的拷贝
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. User1 is making a conflict test  
17&#xff0c;此时User2修改了test.txt的冲突并提交
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. C:\workspace\test>svn resolve --accept working test.txt  
  2. Resolved conflicted state of &#39;test.txt&#39;  
  3. C:\workspace\test>svn ci -m "conflict resolved"  
  4. Sending        test.txt  
  5. Transmitting file data .  
  6. Committed revision 4.  

2.6、svn st&#xff1a;查看文件或者目录状态

1&#xff09;svn status path&#xff08;目录下的文件和子目录的状态&#xff0c;正常状态不显示&#xff09;

说明&#xff1a;【?&#xff1a;不在svn的控制中&#xff1b;M&#xff1a;内容被修改&#xff1b;C&#xff1a;发生冲突&#xff1b;A&#xff1a;预定加入到版本库&#xff1b;K&#xff1a;被锁定】

2&#xff09;svn status -v path(显示文件和子目录状态)

说明&#xff1a;【第一列保持相同&#xff0c;第二列显示工作版本号&#xff0c;第三和第四列显示最后一次修改的版本号和修改人。】


简写&#xff1a;svn st 

注&#xff1a;svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的&#xff0c;原因是svn在本地的.svn中保留了本地版本的原始拷贝。

例如&#xff1a;svn st -q (只显示本地修改条目信息)


svn status可能返回的状态码

文件、目录或是符号链item预定加入到版本库。

文件item发生冲突&#xff0c;在从服务器更新时与本地版本发生交迭&#xff0c;在你提交到版本库前&#xff0c;必须手工的解决冲突。

文件、目录或是符号链item预定从版本库中删除。

文件item的内容被修改了。
R 
文件、目录或是符号链item预定将要替换版本库中的item&#xff0c;这意味着这个对象首先要被删除&#xff0c;另外一个同名的对象将要被添加&#xff0c;所有的操作发生在一个修订版本。
X 
目录没有版本化&#xff0c;但是与Subversion的外部定义关联&#xff0c;关于外部定义&#xff0c;可以看“外部定义”一节。
? 
文件、目录或是符号链item不在版本控制之下&#xff0c;你可以通过使用svn status的--quiet&#xff08;-q&#xff09;参数或父目录的svn:ignore属性忽略这个问题。

文件、目录或是符号链item在版本控制之下&#xff0c;但是已经丢失或者不完整&#xff0c;这可能因为使用非Subversion命令删除造成的&#xff0c;如果是一个目录&#xff0c;有可能是检出或是更新时的中断造成的&#xff0c;使用svn update可以重新从版本库获得文件或者目录&#xff0c;也可以使用svn revert file恢复原来的文件。

文件、目录或是符号链item在版本库已经存在&#xff0c;但你的工作拷贝中的是另一个。举一个例子&#xff0c;你删除了一个版本库的文件&#xff0c;新建了一个在原来的位置&#xff0c;而且整个过程中没有使用svn delete或是svn add。

文件、目录或是符号链item不在版本控制下&#xff0c;Subversion已经配置好了会在svn add、svn import和svn status命令忽略这个文件。注意&#xff0c;这个符号只会在使用svn status的参数--no-ignore时才会出现—否则这个文件会被忽略且不会显示&#xff01;


2.7、svn del&#xff1a;删除文件

svn delete path -m “delete test fle”

简写&#xff1a;svn (del, remove, rm)

例如&#xff1a;先&#xff0c;svn delete test.php     再&#xff0c;svn ci -m ‘delete test file‘


2.8、svn log&#xff1a;查看日志

svn log path

例如&#xff1a;svn log  -l 3 test.php 显示这个文件的最近三条修改记录&#xff0c;及其版本号的变化

例如&#xff1a;svn log file -r 204424显示 r204424这个版本的提交信息

例如&#xff1a;svn log file -r 204424 -v 详细显示 r204424这个版本的提交记录


2.9、svn info&#xff1a;查看文件详细信息

svn info path

例如&#xff1a;svn info test.php

2.10、svn diff&#xff1a;比较差异

1&#xff09;svn diff path(将修改的文件与基础版本比较)

例如&#xff1a;svn diff test.php

2&#xff09;svn diff -r m:n path(对版本m和版本n比较差异)

例如&#xff1a;svn diff -r 200:201 test.php

例如&#xff1a;svn diff -c r208425 查看这个版本的差别

简写&#xff1a;svn di  


[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. root&#64;letuknowit:/home/kris/calc/trunk# svn diff main.c  
  2. Index: main.c  
  3. &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;  
  4. --- main.c      (revision 8)  
  5. &#43;&#43;&#43; main.c      (working copy)  
  6. &#64;&#64; -7,7 &#43;7,8 &#64;&#64;  
  7.         printf("5 &#43; 10 &#61; %d.\n",add(5,10));  
  8.         printf("15 - 10 &#61; %d.\n",sub(15,10));  
  9.         //kris&#39;s test  
  10. -       printf("kris: 12 &#43; 28 &#61; %d.\n",add(12,28));  
  11. &#43;       printf("kris: 32 &#43; 28 &#61; %d.\n",add(32,28));  
  12. &#43;       printf("kris: 15 - 10 &#61; %d.\n",sub(15,10));  
  13.         //sally&#39;s test  
  14.         printf("sally: 60 - 33 &#61; %d.\n",sub(60,33));  
  15.         return 0;  
svn diff可以查看当前工作拷贝中所有的被修改的文件&#xff0c;对于每个文件的diff输出部分由Index: 文件名的形式进行区分。等于号后面的内容就是关于main.c文件的diff情况了。
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. --- main.c      (revision 8)  
  2. &#43;&#43;&#43; main.c      (working copy)  
--- 打头的是原始文件&#xff0c;也就是版本库中的最新版本&#xff0c;或者理解为修改前的文件
&#43;&#43;&#43; 打头的是目标文件&#xff0c;这个就是你修改后的版本
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. &#64;&#64; -7,7 &#43;7,8 &#64;&#64;  
这里的-和&#43;分别表示原始文件和目标文件&#xff0c;7,7表示从第7行开始的7行&#xff0c;-7,7就是原始文件的从第7行开始的7行内容&#xff0c;&#43;7,8的意思类似&#xff0c;表示目标文件从第7行开始的8行内容。

结合起来理解就是&#xff1a;目标文件从第7行开始的8行内容和原始文件的从第7行开始的7行内容之间存在差异

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1.         printf("5 &#43; 10 &#61; %d.\n",add(5,10));  
  2.         printf("15 - 10 &#61; %d.\n",sub(15,10));  
  3.         //kris&#39;s test  
  4. -       printf("kris: 12 &#43; 28 &#61; %d.\n",add(12,28));  
  5. &#43;       printf("kris: 32 &#43; 28 &#61; %d.\n",add(32,28));  
  6. &#43;       printf("kris: 15 - 10 &#61; %d.\n",sub(15,10));  
  7.         //sally&#39;s test  
  8.         printf("sally: 60 - 33 &#61; %d.\n",sub(60,33));  
  9.         return 0;  
这个就是具体的差异情况了&#xff0c;前面的-号表示需要从原始文件中删除的行&#xff0c;&#43;号表示目标文件中将要增加的行&#xff0c;-号开头的部分只属于原始文件&#xff0c;&#43;号开头的部分只属于目标文件&#xff0c;其余的是两者相同的部分。
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1.  7   1   1         printf("5 &#43; 10 &#61; %d.\n",add(5,10));  
  2.  8   2   2         printf("15 - 10 &#61; %d.\n",sub(15,10));  
  3.  9   3   3         //kris&#39;s test  
  4. 10   4     -       printf("kris: 12 &#43; 28 &#61; %d.\n",add(12,28));  
  5. 11       4 &#43;       printf("kris: 32 &#43; 28 &#61; %d.\n",add(32,28));  
  6. 12       5 &#43;       printf("kris: 15 - 10 &#61; %d.\n",sub(15,10));  
  7. 13   5   6         //sally&#39;s test  
  8. 14   6   7         printf("sally: 60 - 33 &#61; %d.\n",sub(60,33));  
  9. 15   7   8         return 0;  
为了进一步了解&#64;&#64; -7,7 &#43;7,8 &#64;&#64;的意思&#xff0c;上面加上了行号等信息&#xff0c;第一列的数字是行号&#xff0c;后面两列的数字表示第几行。经过标注可以清晰的看出原始文件第7行开始的7行和目标文件第7行开始的8行内容了。


2.11、svn merge&#xff1a;将两个版本之间的差异合并到当前文件

svn merge -r m:n path

例如&#xff1a;svn merge -r 200:205 test.php&#xff08;将版本200与205之间的差异合并到当前文件&#xff0c;但是一般都会产生冲突&#xff0c;需要处理一下&#xff09;

2.12、svn  help&#xff1a;帮助

svn help

svn help ci

2.13、svn mkdir&#xff1a;创建新目录

svn mkdir

说明&#xff1a;创建纳入版本控制下的新目录。

2.14、svn revert&#xff1a;恢复本地修改

svn revert PATH

说明&#xff1a; 主要用来恢复文件的SVN状态&#xff0c;比如一个SVN下文件是A(add)&#xff0c;D(delete)&#xff0c;M(modify)状态&#xff0c;那么用svn revert可以恢复该文件到原来的“SVN状态”。

2.15、svn resolved&#xff1a;解决冲突

svn resolved PATH

说明&#xff1a;移除工作副本的目录或文件的“冲突”状态。
注意: 本子命令不会依语法来解决冲突或是移除冲突标记&#xff1b;它只是移除冲突的相关文件&#xff0c;然后让 PATH 可以再次提交。

2.16、svn import&#xff1a;导入

使用svn import是把未版本化的文件树复制到资料库的快速办法&#xff0c;它需要创建一个临时目录。 
[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. $ svnadmin create /usr/local/svn/newrepos  
  2. $ svn import mytree file:///usr/local/svn/newrepos/some/project  
  3. Adding         mytree/foo.c  
  4. Adding         mytree/bar.c  
  5. Adding         mytree/subdir  
  6. Adding         mytree/subdir/quux.h  
  7.   
  8.   
  9. Committed revision 1.  
上面的例子把在some/project目录下mytree目录的内容复制到资料库中。 
[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. $ svn list file:///usr/local/svn/newrepos/some/project  
  2. bar.c  
  3. foo.c  
  4. subdir/  

注意在导入完成后&#xff0c;原来的树没有被转化成一个工作副本。为了开始工作&#xff0c;你仍然需要svn checkout这个树的一个新的工作副本。

2.17 svn diff --summarize&#xff1a;分支diff打包

在某个分支上&#xff0c;都是自己的代码&#xff0c;需要最终合线&#xff0c;可以只将之前的diff找出来打包

[plain] view plaincopy
  1. svn diff --summarize -r37565:37571 | awk &#39;{print $2}&#39; | xargs tar czvf  backup_$(date &#43;%F).tar.gz  
[plain] view plaincopy
  1. tar -czvf test_diff.tar.gz &#96;svn di --summarize -r41413:41408| awk &#39;{print $2}&#39; &#96;    

注意&#xff0c;在查找原来版本和最新版本时&#xff0c;svn log 默认是当前目录的log记录。不一定是整个代码树的最新log。所以建议使用URL来查找。

[plain] view plaincopy
  1. svn log https://develop/genericbranch_7 | less  


2.18 创建一个新的分支

[cpp] view plaincopy
  1. svn cp -m "create new branch" http://online -r 38577 http://branch_7  




3&#xff0c;svn一般查日志流程

更新代码&#xff1a;svn up   
查看日志&#xff1a;svn log 
查看具体修改信息&#xff1a;svn diff -c r208425
svn恢复具体版本&#xff1a;svn revert -r 208425

4&#xff0c;典型的工作周期是这样的&#xff1a;

更新你的工作拷贝
svn update
做出修改
svn add
svn delete
svn copy
svn move
检验修改
svn status
svn diff
可能会取消一些修改
svn revert
解决冲突&#xff08;合并别人的修改&#xff09;
svn update
svn resolved
提交你的修改
svn commit

5&#xff0c;SVN 常用命令一览表

命令 功能 使用格式
checkout检出svn  co  URL
up 更新到当前URL的末端 svn  up
switch 更新到某一tag/branchsvn  switch  (tag/分支)URL
add 增加 svn  add  文件名/目录名
rm删除文件svn  rm 文件名
删除目录svn  rm 目录名
diff与base版本&#xff08;最后检出或者更新到的版本&#xff09;对比svn  diff
与版本库中最新版本对比svn  diff  -r  head
当前工作副本&#xff0c;两个版本之间对比svn  diff  -r  reversion1:reversion2
版本库中任意两个tag做对比svn   diff    (tag1)URL    (tag2)URL
ci提交svn ci -m "commit log"
log 查看当前工作副本log svn  log
只查看指定版本的logsvn  log  -r
打印log所有附加信息svn  log  -v
查看当前tag/branch版本详情svn  log --stop-on-copy -v
info查看当前工作副本所在URLsvn  info
status查看工作副本的状态svn st
查看文件的taglistsvn命令不支持&#xff0c;可执行cs taglist
tag 新增tag svn cp . &#xff08;tag&#xff09;URL
删除tagsvn rm &#xff08;tag&#xff09;URL -m "commit log"
覆盖已经存在的tag不支持
分支开发创建branchsvn  cp  &#xff08;基线版本&#xff09;URL &#xff08;分支&#xff09;URL  -m "commit log"
删除branchsvn rm &#xff08;分支&#xff09;URL   -m "commit log"
同步svn co &#xff08;主干&#xff09;URL
cd ~/wc
svn merge &#xff08;主干&#xff09;URL &#xff08;待同步tag&#xff09;URL
svn ci -m "commit log"
svn cp &#xff08;主干&#xff09;URL &#xff08;以_PD_BL_MAIN结尾的tag&#xff09;URL -m"commit log"
合并svn co &#xff08;合并目标&#xff09;URL
cd ~/wc
svn merge &#xff08;基线版本tag&#xff09;URL  &#xff08;上线tag&#xff09;URL
svn ci -m "commit log"
svn cp &#xff08;合并目标&#xff09;URL &#xff08;上线tag_MERGE_的tag对应&#xff09;URL -m"commit log"


 








推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
author-avatar
初升的太阳1866
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有