1

これが私がやりたいことです。出来ますか

  • gitにプロジェクトがあります。多くの人がプッシュ、プル、マージなどを行います。通常の IT ワークフロー
  • svn へのマスター ブランチに、これらの git リポジトリのプッシュ変更が 1 つだけあります。

他の誰も svn リポジトリにコミットすることはありません。一方向のみです。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

全て大丈夫。SVN の状態を反映するために refs/remotes/git-svn を使用する 'origin/master' と 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 リポジトリの場合svn co、同じコミットが表示されます。

origin/masterブランチがあるという事実からわかるように、どこか別の場所から Git リポジトリを複製したか、リポジトリをプッシュしたのではないかと思います。origingit-svn ブランチはリモートに追加されません。

言い換えれば、ここには警告を発するものは何もありません。すべてが期待どおりに機能しているようです。

于 2012-07-25T04:05:03.417 に答える