gitHub使用SVN commit时报错 “svn mkcol not allowed”

1.  GitHub中以svn方式下载代码之后,commit时,可能报错“svn mkcol not allowed”;

2.    原因可能是gitHub使用了更严格的版本管理机制,不能直接checkout就可以commit,使用下面的步骤后OK;下面的步骤,参考了:http://www.oschina.net/translate/collaborating-on-github-with-subversion?cmp  其实这里是对官网的翻译;



3.    用到的工具,Svn Windows下的命令行工具,可以到这里选择下载 http://subversion.apache.org/packages.html,我选的是SlikSVN:

         这里的命令行工具,都是有源码的,有兴趣的可以到这里下载研究:http://subversion.apache.org/download/#recommended-release


好消息是现在你可以通过 Git 和 Subversion (SVN) 的客户端来访问 Github 的资料库。

这篇文章大概介绍了如何利用 Subversion 客户端来更好的使用 GitHub 流程。

Github 流程中每次功能提交和bug修复都会通过以下的步骤来完成:

  1. 从最新的 master 分支中创建一个 topic 分支
  2. 在你准备好要合并时在 topic 分支中提交
  3. 通过 Pull Request 将 topic 分支拉到 master 分支,讨论变更,更多提交等等,知道团队准备好合并
  4. 合并 Pull Request 然后发布

开始

首先要做的就是 svn checkout。Git 的 clone 让工作目录和资源库文件分离开来,工作目录在一个时间只有一个分支。而 svn checkout 是不同的,它在工作目录中混有资源库数据,因此你 checkout 的每个分支、标签都有相应的工作目录。资源库包含大量的分支和标签,如果把所有数据都 checkout 出来非常费带宽,你应该只检出某部分数据。


GitHub 通过 HTTP 协议来支持 git 和 svn 的客户端,你可以通过 HTTP clone URL 来浏览资源库中的文件。

gitHub使用SVN commit时报错 “svn mkcol not allowed”_第1张图片

现在可以准备 checkout 了:

首先我们 checkout 一个资源库,并不下载任何文件:

1 > svn co --depth empty https://github.com/widgetmakers/gizmo
2 Checked out revision 1.
3 cd gizmo
然后获取 trunk 分支,svn 中的 trunk 分支相当于 git 里的 HEAD 分支(通常是 master)

1 > svn up trunk
2 A    trunk
3 A    trunk/README.md
4 A    trunk/gizmo.rb
5 Updated to revision 1.
获取 branches 目录的空 checkout:

view source
print ?
1 > svn up --depth empty branches
2 Updated to revision 1.

进入 Git 流程

首先是创建一个 topic 分支,在你的 svn 客户端中,确保 master 是当前更新的 trunk,然后使用 svn copy 来创建分支:


1 > svn up trunk
2 At revision 1.
3 > svn copy trunk branches/more_awesome
4 A         branches/more_awesome
5 > svn commit -m 'Added more_awesome topic branch'
6 Adding         branches/more_awesome
7  
8 Committed revision 2.


然后你可以通过 web 界面或者 git 客户端看到一个新的分支:

gitHub使用SVN commit时报错 “svn mkcol not allowed”_第2张图片

view source
print ?
1 cd 到相应分支的目录 比如 cd branches/more_awesome
svn add 你要上传的目录或文件


然后提交,就像你平时使用 svn 一样:编辑文件,然后 svn commit 来提交变化。OK了;

view source
print ?


0 > svn add test
1 A         test
2 A         test/gizmo_test.rb
3 > svn commit -m 'Test coverage for problems'
4 Adding         more_awesome/test
5 Adding         more_awesome/test/gizmo_test.rb
6 Transmitting file data .
7 Committed revision 4.

你可能感兴趣的:(工具,技巧)