相关疑难解决方法(0)

使用git-svn(或类似)*just*来帮助svn合并?

我的项目中出现了一些复杂的颠覆合并:长期分离的大分支.Svn给出了太多的冲突 - 其中一些似乎是虚假的.


鉴于git对于优秀的合并体验而言,为了使合并更易于管理,使用git-svn 它是否有益?


你能推荐其他的替代品(如svk,hgsvn),以减轻疼痛合并?

有些冲突很容易解决(例如java导入,空格) - 所以我也想知道是否有任何自动解决方案.

将来可能会完全切换到DVCS(我们中的一些人会喜欢),但现在不行.(更新:这不再是真的 - 团队最近完全切换并对此感到高兴).

提前致谢.

PS:有些帖子似乎是相关的(例如git-svn合并2个svn分支),但他们没有完全回答这个问题.

更新:看完我的-novice-回答后再往下走(这个道路).

svn merge svk git-svn hgsubversion

27
推荐指数
1
解决办法
3614
查看次数

为什么git svn dcommit会丢失本地分支的合并提交历史记录?

我有一个创建的本地git存储库git svn clone.我创建一个本地分支,进行一些更改,切换回master,git svn rebase如果一切都好,我将我的分支合并回master.然后树看起来像这样:

替代文字http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

有时,稍后当我git svn rebase再次进行一些远程更改时,它会失去a_branch合并到主线并且树看起来像这样的事实:

替代文字http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

这是为什么?我可以阻止它吗?有没有一种简单的方法来判断分支是否已合并,或者在我完成时应该删除我的分支,所以我不会忘记已经合并了什么?

git git-svn rebase

18
推荐指数
1
解决办法
4414
查看次数

Git-svn合并了两个SVN分支

我已经阅读了很多关于git-svn和合并的SO问题和博客.其中一些(特别是git-svn手册页)警告不要在我计划的分支附近使用合并dcommit.

其他人,比如这个SO答案,说明合并很好,只要我使用之前删除的一次性功能分支dcommitting.

我有两个长寿SVN(和git)分支的设置:

  • trunk(git-svn:svn/trunk,git :) master- 稳定分支
  • branches/devel(git-svn:svn/devel,git :) devel- 我从中分支功能分支的主要开发分支(我可以将它们重新定位devel而不是合并).

源树中当前状态的快照

在上图中,(1)显示了过去的SVN历史,branches/devel已合并到哪里trunk.

(2)表明我已经成功将dcommitted当前的开发重新纳入SVN.

问题:我可以git-svn用来合并两个SVN分支,以便历史记录显示合并点(如SVN本身可以做的那样)吗?换句话说:如果我是dcommit(3)master所示的那样会发生什么?

这会弄乱我的SVN(或git)历史吗?或者这只是简单地忘记了devel被合并进去master了吗?

编辑:如果git只是忘记devel合并master,dcommiting从点(3)到将所有提交作为单个补丁应用有区别吗?

git git-svn

16
推荐指数
1
解决办法
7255
查看次数

Git SVN和合并分支

我正在开发一个带有两个分支的svn项目,让我们调用它们

trunk
branches/foo
Run Code Online (Sandbox Code Playgroud)

我的想法是克隆整个svn存储库(告诉git哪个文件夹是主干,标签和分支),在git中进行合并然后将我的合并复制到svn工作副本并从svn提交更改.

在这个工作流程中,我是否可以使用gits合并功能,还是仅适用于使用git创建的分支?

svn git git-svn

14
推荐指数
1
解决办法
2万
查看次数

这个git-svn工作流程会起作用吗?

我正在尝试git-svn,并试图想出一个相对不容易出错的工作流程.我认为以下内容应该可行,并且非常简单,但我看到人们使用更复杂的工作流程,所以我想知道为什么.

  1. (master) $ git svn init <path>
  2. (master) $ git svn fetch
  3. (master) $ git svn rebase
  4. (master) $ git checkout -b topic-branch
  5. (topic-branch) $ # HACK HACK COMMIT HACK HACK HACK COMMIT HACK COMMIT
  6. (topic-branch) $ git checkout master
  7. (master) $ git merge topic-branch - 这是一个快进合并,所以没有合并提交
  8. (master) $ git svn rebase
  9. (master) $ # fix conflicts
  10. (master) $ git svn dcommit
  11. GOTO 4

git git-svn

9
推荐指数
1
解决办法
1089
查看次数

将Git存储库发布到SVN

我和我的小团队在Git工作,而较大的团队使用Subversion.我想安排一个cron作业,HEAD每小时将我们的存储库当前发布到SVN 仓库中的某个目录中.

我以为我已经想到了这一点,但我之前写下的食谱现在似乎没有起作用:

git clone ssh://me@gitserver/git-repo/Projects/ProjX px2
cd px2
svn mkdir --parents http://me@svnserver/svn/repo/play/me/fromgit/ProjX
git svn init -s http://me@svnserver/svn/repo/play/me/fromgit/ProjX
git svn fetch
git rebase trunk master
git svn dcommit
Run Code Online (Sandbox Code Playgroud)

这是我尝试时会发生的事情:

% git clone ssh://me@gitserver/git-repo/Projects/ProjX px2
Cloning into 'ProjX'...
...

% cd px2

% svn mkdir --parents http://me@svnserver/svn/repo/play/me/fromgit/ProjX
Committed revision 123.

% git svn init -s http://me@svnserver/svn/repo/play/me/fromgit/ProjX
Using higher level of URL: http://me@svnserver/svn/repo/play/me/fromgit/ProjX => http://me@svnserver/svn/repo

% git svn fetch
W: Ignoring error from SVN, path probably does not exist: (160013): …
Run Code Online (Sandbox Code Playgroud)

svn git mirroring

4
推荐指数
1
解决办法
1957
查看次数

标签 统计

git ×5

git-svn ×5

svn ×3

hgsubversion ×1

merge ×1

mirroring ×1

rebase ×1

svk ×1