背景:有时在更新测试服务器上的目录时,不需要更新如配置文件夹里的代码,如:data目录。
命令行可以这么来
svn update –set-depth=exclude 文件夹
那么TortoiseSVN客户端呢?
在文件夹右键中的”更新至版本(U)”
更新深度选”排除”,确定,搞定
下次更新就不会再更新此目录
要恢复的话在上级目录做相同操作,只是更新深度选择”全递归”
很有步骤的实例解说:
http://scmbob.org/exclude-dirs-when-svn-up.html
TortoiseSVN 1.6以上支持
来自:http://blog.sina.com.cn/s/blog_61e2e42601019gx9.html
张宴兄弟做得更体贴,给整成web的,思想和我一样:http://blog.s135.com/post/371/
引入忽略指定目录的原文内容如下:
很多时候,你的svn repo(假定project)很大(这里指包括所有tags和branches),但是其实你真正需要的却只有一两个(比如说trunk,以及和trunk平级的install目录,同时install目录和trunk目录有着这样活那样的联系),这时你就希望在svn co的时候是co整个project并且忽略你不想要的目录。当然,你大可不必co整个project,而单独co你想要的目录就行了。但是,从SCM的角度出发,你不可以强行改变用户的使用习惯,不排除就有这么些人喜欢这样操作,尤其是对于那些喜欢用命令行的人而言。
可能我这么说,大家没有什么概念,我给大家举个例子,大家应该就知道这是一种什么情况了:
大家都知道,在一个项目的SCM管理中,往往要求开发者通过打tag的方式来进行版本发布,tag存在于tags目录,tags目录往往与trunk/branches目录平级,这里还有一个install目录,如下:
project/
|-- branches
| |-- branch1
| |-- branch2
| `-- branch3
|-- install
|-- tags
| |-- tag1
| |-- tag2
| |-- tag3
| |-- tag4
| `-- tag5
`-- trunk
`-- src
tags目录虽然是一个标签副本,但在checkout的过程中,是会针对一份完整代码的,因此很多人都不希望在本地的working copy中保留这个tags目录。遗憾的是,svn co命令并没有这样一个选项去忽略这个目录。
事实上,我也遇到了这个问题,在我看了很多help之后,终于找到了办法。具体如下(分两种情况讨论):
I. 本地保存有完整的Working Copy情况:
换句话说就是,你已经将svn中完整的repos/directories checkout到本地了(本地已经有一份你在服务器端的完整Copy了)。这时,你只需要运行以下命令将tags以及branches目录排除在svn up列表:
# svn update --set-depth=exclude tags branches
D tags
D branches
选项后面可以跟多个目录,这样,就在你当前的working copy中成功的将tags和branches目录排除掉了,在你下一次的update中,就不会去理会这两个目录了,但同时有保证了你的project是在version control下的,因此不需要每次都逐个进入目录进行svn up了。
II. 进行一次全新的忽略目录Checkout操作:
这种情况如果是在windows下,就显得非常简单,你只需要使用乌龟客户端的“Choose Item”按钮。
但是如果是在命令行的情况下,那就要稍微复杂一点了,请按照如下操作:
1. 首先将目录树checkout到本地:
[root]@[Fck_with_U]:[~/temp]->>svn co http://svn_test_url.com/test_dir my_checkout --depth immediates
A my_checkout/backup
A my_checkout/doc
A my_checkout/scripts
A my_checkout/src
A my_checkout/data
A my_checkout/tool
Checked out revision 736189.
2. 将你不想co的目录排除在外(比如这里我想排除backup, data, doc, src, tool这五个目录,只想checkout scripts目录):
[root]@[Fck_with_U]:[~/temp]->>cd my_checkout/
[root]@[Fck_with_U]:[~/temp/my_checkout]->>ls
backup data doc scripts src tool
[root]@[Fck_with_U]:[~/temp/my_checkout]->>svn up --set-depth=exclude backup data doc src tool
D backup
D data
D doc
D src
D tool
3. 更新你想要的scripts目录:
[root]@[Fck_with_U]:[~/temp/my_checkout]->>svn update --set-depth infinity scripts/
A scripts/trunk
A scripts/trunk/test
...........
这样,目的就达到了!说烦也不烦!
转自:http://scmbob.org/exclude-dirs-when-svn-up.html
命令行可以这么来
svn update –set-depth=exclude 文件夹
那么TortoiseSVN客户端呢?
在文件夹右键中的”更新至版本(U)”
更新深度选”排除”,确定,搞定
下次更新就不会再更新此目录
要恢复的话在上级目录做相同操作,只是更新深度选择”全递归”
很有步骤的实例解说:
http://scmbob.org/exclude-dirs-when-svn-up.html
TortoiseSVN 1.6以上支持
来自:http://blog.sina.com.cn/s/blog_61e2e42601019gx9.html
张宴兄弟做得更体贴,给整成web的,思想和我一样:http://blog.s135.com/post/371/
引入忽略指定目录的原文内容如下:
很多时候,你的svn repo(假定project)很大(这里指包括所有tags和branches),但是其实你真正需要的却只有一两个(比如说trunk,以及和trunk平级的install目录,同时install目录和trunk目录有着这样活那样的联系),这时你就希望在svn co的时候是co整个project并且忽略你不想要的目录。当然,你大可不必co整个project,而单独co你想要的目录就行了。但是,从SCM的角度出发,你不可以强行改变用户的使用习惯,不排除就有这么些人喜欢这样操作,尤其是对于那些喜欢用命令行的人而言。
可能我这么说,大家没有什么概念,我给大家举个例子,大家应该就知道这是一种什么情况了:
大家都知道,在一个项目的SCM管理中,往往要求开发者通过打tag的方式来进行版本发布,tag存在于tags目录,tags目录往往与trunk/branches目录平级,这里还有一个install目录,如下:
project/
|-- branches
| |-- branch1
| |-- branch2
| `-- branch3
|-- install
|-- tags
| |-- tag1
| |-- tag2
| |-- tag3
| |-- tag4
| `-- tag5
`-- trunk
`-- src
tags目录虽然是一个标签副本,但在checkout的过程中,是会针对一份完整代码的,因此很多人都不希望在本地的working copy中保留这个tags目录。遗憾的是,svn co命令并没有这样一个选项去忽略这个目录。
事实上,我也遇到了这个问题,在我看了很多help之后,终于找到了办法。具体如下(分两种情况讨论):
I. 本地保存有完整的Working Copy情况:
换句话说就是,你已经将svn中完整的repos/directories checkout到本地了(本地已经有一份你在服务器端的完整Copy了)。这时,你只需要运行以下命令将tags以及branches目录排除在svn up列表:
# svn update --set-depth=exclude tags branches
D tags
D branches
选项后面可以跟多个目录,这样,就在你当前的working copy中成功的将tags和branches目录排除掉了,在你下一次的update中,就不会去理会这两个目录了,但同时有保证了你的project是在version control下的,因此不需要每次都逐个进入目录进行svn up了。
II. 进行一次全新的忽略目录Checkout操作:
这种情况如果是在windows下,就显得非常简单,你只需要使用乌龟客户端的“Choose Item”按钮。
但是如果是在命令行的情况下,那就要稍微复杂一点了,请按照如下操作:
1. 首先将目录树checkout到本地:
[root]@[Fck_with_U]:[~/temp]->>svn co http://svn_test_url.com/test_dir my_checkout --depth immediates
A my_checkout/backup
A my_checkout/doc
A my_checkout/scripts
A my_checkout/src
A my_checkout/data
A my_checkout/tool
Checked out revision 736189.
2. 将你不想co的目录排除在外(比如这里我想排除backup, data, doc, src, tool这五个目录,只想checkout scripts目录):
[root]@[Fck_with_U]:[~/temp]->>cd my_checkout/
[root]@[Fck_with_U]:[~/temp/my_checkout]->>ls
backup data doc scripts src tool
[root]@[Fck_with_U]:[~/temp/my_checkout]->>svn up --set-depth=exclude backup data doc src tool
D backup
D data
D doc
D src
D tool
3. 更新你想要的scripts目录:
[root]@[Fck_with_U]:[~/temp/my_checkout]->>svn update --set-depth infinity scripts/
A scripts/trunk
A scripts/trunk/test
...........
这样,目的就达到了!说烦也不烦!
转自:http://scmbob.org/exclude-dirs-when-svn-up.html
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6968/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2014-5-7 15:12
评论列表