1 2 3 4 5 6 7 8 9 10 |
$ git svn dcommit Committing to svn://localhost/sample/trunk ... No changes 7cd6ee5df2245125d5ad3d2a763cab7da4882bd2~1 == 7cd6ee5df2245125d5ad3d2a763cab7da4882bd2 No changes between current HEAD and refs/remotes/svn/trunk Resetting to the latest refs/remotes/svn/trunk Unstaged changes after reset: M test Unable to extract revision information from commit d8f5f6d5c2ee6e84ac7b0c43cfb5f28f03113dce~1 |
該当の修正は、そんな大した修正ではないのだが・・。
https://github.com/nilesflow/git-svn-test2019/commit/51512d9d9fdddd4239f000f822b58e8a668293cf
https://github.com/nilesflow/git-svn-test2019/commit/d8f5f6d5c2ee6e84ac7b0c43cfb5f28f03113dce
rebase すると、git svn dcommit 後に、コミットIDを書き換えないために行った、git pull によるコミットがマージされてしまう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ git svn rebase First, rewinding head to replay your work on top of it... Applying: pre-svn-dcommit Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... No changes -- Patch already applied. Applying: pre-svn-dcommit Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... No changes -- Patch already applied. Applying: git master 1:13 Applying: git master2 1:14 |
この状態で、dcommit すると成功した。
・dcommitでコミットIDが変わった事に対して、git origin から pull すると、svn 側が上記エラー状態に
・dcommitでコミットIDが変わった事を正とすると、git push -f で歴史書き換えになってしまう。
うーん。
git svn rebase すると、マージコミットなりが rebase されまくるので、
オプション見てもこれを防ぐことは不可能。
git svn の操作対象ブランチはおとなしく、rebase を受け入れるしかない、と考えた。
svn/trunk と git側の master は共存できない、という結論。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
★SVNブランチは別に作る(リモートにpushしなくても良い。すると、コミットIDが変わるので面倒くさい git checkout -b svn/trunk remotes/svn/trunk ★gitマスターへは手動マージ git checkout master git merge svn/trunk ★master修正(その先のgitエコシステムで修正) git checkout master hogehoge ★まずrebase git checkout svn/trunk git svn rebase ★変更があったら、またmasterにマージ? ★その後マージ git checkout svn/trunk git merge master |
こんなエラーも
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ git svn dcommit Committing to svn://localhost/sample/trunk ... No changes 3b53c3c48a0bf9aa8eec835562a352409ff13ffb~1 == 3b53c3c48a0bf9aa8eec835562a352409ff13ffb W: 3b53c3c48a0bf9aa8eec835562a352409ff13ffb and refs/remotes/svn/trunk differ, using rebase: :100644 100644 5e3e53d12d4d69c1ca7e5d69446cefbf2583e6d7 c6e2643e1a10f0f7cc8ba49237d1dcf40daf9165 M test It seems that I cannot create a rebase-apply directory, and I wonder if you are in the middle of patch application or another rebase. If that is not the case, please rm -fr /home/nilesflow/svn/git-svn/sample-localtime/.git/rebase-apply and run me again. I am stopping in case you still have something valuable there. rebase refs/remotes/svn/trunk: command returned error: 1 |