我厌倦了颠覆,它不断破坏自己的存储库.因为我很长一段时间都是古怪的并且总是想尝试一下,所以我决定试一试并使用git-svn.但阅读文档我意识到你不能使用它的git awesomeness.你不能使用git-pull,不建议创建本地分支,并且有很多限制.看起来它比直接使用subversion好多了.或者是吗?git-svn对普通svn有什么利弊?
PS.对不起,我不是在问你如何修复我的subversion存储库,我不在乎.一夜之间删除同一目录中的所有.svn和checkout工作正常.我只是想知道git-svn带来什么好处.
我正在使用如下布局的SVN存储库:
$SVN/[project]/trunk $SVN/[project]/branches/[user]/[branch] $SVN/[project]/tags/releases/[tag]
我的.git/config看起来像这样:
[svn-remote "svn"] url = $SVN fetch = project/trunk:refs/remotes/trunk branches = project/branches/*/*:refs/remotes/*
当我看到git branch -a时,我看到了所有的远程分支.假设我想检查一个,处理它,然后提交更改.这是我想要做的:
git checkout -b comments erik/comments .... work, commit locally .... git svn dcommit
但是,dcommit总是推送到$ SVN/project/trunk.git svn info始终将URL报告为$ SVN/project/trunk
我尝试过使用--track,我尝试用--hard重置.我在这里没有想法.我怀疑这是我的[svn-remote],但这只是一种预感.
我正在参加自由软件竞赛,我们必须使用一个使用GForge的伪造,只支持SVN,但我想使用Git(使用gitorious)作为例子.
有一种简单的方法可以获得两个存储库(一个在SVN上,另一个在Git上)同时更新或更少?
按照本教程的建议,我克隆了一个没有标准布局的svn存储库.
Run Code Online (Sandbox Code Playgroud)git-svn clone -s http://example.com/my_subversion_repo local_dir-s表示我的Subversion存储库有一个标准布局(trunk /,branches /和tags /.)如果你的存储库没有标准布局,你可以将其关闭.
作为git的新手,我没有意识到只是在没有补充--trunk, - .branches和--tags选项的情况下放弃-s选项,不仅会让我无法使用无分支存储库,而且会让整个检出存储库(而不仅仅是主干的头部).
有没有办法"修复"我的本地git存储库,就好像我是在知道svn存储库布局的情况下创建它的?我可以使用git-svn init重新初始化我的存储库吗?由于涉及的时间长,我希望避免不得不从头开始.
我有一个存储库,其布局如下:
trunk/
projectA
projectB
branches/
projectA-1.0
projectB-1.0
tags/
projectA-1.0.1
projectB-1.0.1
我想将它们转换为单独的git存储库,其中trunk/projectA作为顶级目录,所有它的分支作为git branches.
每当我尝试指定git svn init类似内容时git svn init -T trunk/projectA -b branches -t tags http://svn.example.com,后续操作git svn fetch就会在不同的版本上神秘地失败.有时它会一直到200,有时会停止.
我目前的想法是,我应该创建一个git存储库,它将整个subversion存储库镜像为一个单独的实体,每个项目都有子目录.然后我会用git-filter-branch子目录重写到项目的根目录.
但是,我不确定如何使分支表现得像我想要使用git-filter-branch和.
另外,理想的做法是为每个项目的"主干"创建一个具有不同分支的单个git仓库,在这种情况下我没有问题没有真正拥有主人.
我正在开发一个目前在svn中跟踪的网站项目,但是一旦其他人有时间设置新的服务器和东西,它将转移到git.这是一个很长的故事,但与此同时,我已经从我的一些代码中创建了自己的git存储库,并对它进行了相当多的工作.我没有使用git svn clone,因为我在海外,我的互联网连接很奇怪,需要HTTP代理,而且似乎没有让git svn通过.在任何情况下,我一直在我自己的git存储库中开发,但最终一旦项目实际上正确导入,我将需要将我的工作重新定义为git-svn克隆的东西.会git rebase为此正常工作吗?
一个复杂的问题是,我实际上是在虚拟机中工作,对于许多提交,我没有意识到我没有设置user.name和user.email配置条目,所以提交来自vm的本地用户,这是一种很奇怪 将所有更改收集到diff文件中然后在创建新分支时将它们应用到新分支上会更好吗?
另一个复杂因素是之前使用的SVN有点半心半意,因此生产服务器上实际上没有提交我未提及的更改.实际上,我首先对代码进行了较旧的修订,甚至不是SVN头,所以我遗漏了一些东西.什么是最好的方法?
最后一个问题是,如果我通过导入SVN存储库git svn(我刚刚检查过它似乎现在正在工作)但是我没有添加一个authors文件,我以后能否将我的更改重新绑定到正确导入的分支上有作者文件?
哦,一个新的复杂功能.我自己导入了SVN存储库git svn,这是一个艰苦的过程,在这个缓慢的连接上花费了两天的大部分时间.然而,在最终完成克隆之后,我意识到在SVN存储库中代码都在子目录中,但在我的git存储库中,存储库的根也是目录的根.如果这有点令人困惑,那基本上就是这样
SVN:
\dir\codez
混帐:
\codez
我如何组合这两个存储库?我希望我仍然可以使用rebase,但这似乎是一个非常奇怪的情况.它听起来类似于子模块,但我认为这不是我需要的.