1

这就是我想做的。可能吗

  • 在 git 中有项目。很多人推,拉,合并等。正常的工作流程
  • 在它的主分支中只有一个 git repo 的推送更改到 svn。

没有其他人会提交 svn repo。这只是一个方向。从 git 到 svn。它只会对 git 上的 master 进行更改并将它们添加到 svn。svn 基本上是 master 分支的 svn 版本。

我以为我能做到

git svn dcommit

一遍又一遍

..edit, push and or pull files..
git commit -a -m "foo1"
git svn dcommit
..edit, push and or pull files..
git commit -a -m "foo1"
git svn dcommit
..edit, push and or pull files..
git commit -a -m "foo1"
git svn dcommit

但这似乎不起作用。我不断收到冲突和消息,例如

$ git svn dcommit
Committing to https://my.svn.repo/svn/ ...
        M       README.md
Committed r18619
        M       README.md
r18619 = 8f00073a3f1987e97a0f0f194798b6e02e9b0345 (refs/remotes/git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
Unstaged changes after reset:
M       README.md
        M       README.md
Committed r18620
        M       README.md
r18620 = 47313477c1e38959fadd43d0001ff55210637669 (refs/remotes/git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn

这似乎很可疑。git status 给了我

# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 2 different commits each, respectively.
#

我觉得我从根本上错过了一些东西。就像我根本不应该使用 git-svn 一样。事实上,如果我所做的只是这个

cd ~/git-folder
..edit files..
git commit -a -m "foo"
cd ~/svn-folder
cp -r ~/git-folder .
svn commit -m "foo"

它实际上会起作用,我只会丢失所有提交消息和个人提交。

有人可以指出我错过了什么

4

2 回答 2

2

一切都好。'origin/master' 和使用 refs/remotes/git-svn 来反映 SVN 状态的 git-svn 之间没有关系。'master' 和 'origin/master' 出现分歧,因为 git-svn 没有触及 'origin/master' 而是将 'master' 中的提交替换为具有(通常)相同内容但具有“git-svn-id”签名的提交提交消息(因此 sha-1 哈希以这种方式更改)。

于 2012-07-25T08:08:43.013 回答
0

对我来说,输出git svn dcommit看起来不错,它只是在 SVN 存储库中重新创建 Git 提交。如果您svn co是 SVN 存储库,您会看到相同的提交。

我怀疑您已经从其他地方克隆了 Git 存储库,或者已经推送了存储库,正如您有一个origin/master分支这一事实所表明的那样;git-svn 分支不会添加到origin遥控器下。

换句话说,我在这里看不到任何引起警报的东西。一切似乎都按预期工作。

于 2012-07-25T04:05:03.417 回答