[svn] Unable to determine upstream SVN information from HEAD history.
カテゴリー: General
2024-04-01
タイトル
結論
登録間違っていないし、なんだろうこのエラー
選択肢は2個
(1)このままgit運用する
このままgit運用に切り替えてsvn捨ててしまえば問題なし
(2)svnに直接書き込む
git svn dcommit させてほしい・・・
困った・・・
svn/trunkに戻ってもダメ
このコマンドでも同じエラーがでますね
svnのrevison対照表が最初から保存されなかった可能性あり
履歴からわからない
わからない。
shaではなく えっ 原始的な方法で管理してるの?
clone時に
--no-metadata
を指定したせいかも。
ということで、
(1) cloneし直してみる
[ --no-metadata は 指定しない ]
コミットログに リビジョンが埋め込まれる
svnと連動しているか確認
今度は大丈夫っぽいです。
(2) 新しいリポジトリ
コミットのユーザー名が変更されてしまいました
svn: [なし]
git: (no author) <(no author)>
git svn dcommitの問題点
svnの利点は
gitと違って、先に -f で コミット壊されたとかいうのがないのでいい。
svnはコミットすればするほどサーバーとクライアントの両方でファイルがどんどん増えていくので
適当なところで、移行したい。
コミットしたらサーバーに送るように設定したらsvnと同じような運用にできる? 競合したらpushエラーでわかる。
.git/hooks/post-commit
fatal: no upstream
コミット前に自動コード整形もしたい?破損する?
.git/hooks/pre-commit
執筆:2024.04.01
編集:2024.04.01
編集:2024.04.01
結論
clone時に
--no-metadata
を指定したせいです
相互運用する場合はこのオプションは指定してはいけません
--no-metadata
を指定したせいです
相互運用する場合はこのオプションは指定してはいけません
$ git svn dcommit
Unable to determine upstream SVN information from HEAD history.
Perhaps the repository is empty. at /usr/libexec/git-core/git-svn line 859.
Unable to determine upstream SVN information from HEAD history.
Perhaps the repository is empty. at /usr/libexec/git-core/git-svn line 859.
$ git svn dcommit
Unable to determine upstream SVN information from HEAD history.
Perhaps the repository is empty. at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 916.
Unable to determine upstream SVN information from HEAD history.
Perhaps the repository is empty. at C:/Program Files/Git/mingw64/libexec/git-core\git-svn line 916.
$ git config --list --local | grep svn
登録間違っていないし、なんだろうこのエラー
選択肢は2個
(1)このままgit運用する
このままgit運用に切り替えてsvn捨ててしまえば問題なし
(2)svnに直接書き込む
- gitで空ブランチに切り替える
- svn取り込んでチェックアウトする
- gitで同じリビジョンに強制上書き
git checkout [SHA] -f - git checkout master
- svn commit
git svn dcommit させてほしい・・・
困った・・・
svn/trunkに戻ってもダメ
$ git branch main svn/trunk
$ git checkout main
$ git merge master --squash && git commit
$ git diff master main
$ git svn dcommit
Unable to determine upstream SVN information from HEAD history.
だめですか ケチ$ git checkout main
$ git merge master --squash && git commit
$ git diff master main
$ git svn dcommit
Unable to determine upstream SVN information from HEAD history.
このコマンドでも同じエラーがでますね
$ git svn info
Unable to determine upstream SVN information from working tree history
Unable to determine upstream SVN information from working tree history
$ git checkout svn/trunk
$ git svn info
Unable to determine upstream SVN information from working tree history
根本的にダメってことですね。$ git svn info
Unable to determine upstream SVN information from working tree history
svnのrevison対照表が最初から保存されなかった可能性あり
履歴からわからない
わからない。
shaではなく えっ 原始的な方法で管理してるの?
clone時に
--no-metadata
を指定したせいかも。
ということで、
(1) cloneし直してみる
[ --no-metadata は 指定しない ]
コミットログに リビジョンが埋め込まれる
git log -n 1 svn/trunk
git-svn-id: svn://localhost/trunk@番号 xx-xx-xx-xx
git-svn-id: svn://localhost/trunk@番号 xx-xx-xx-xx
svnと連動しているか確認
git svn info
Path: .
URL: svn://localhost/trunk
Repository Root: svn://localhost
....
Path: .
URL: svn://localhost/trunk
Repository Root: svn://localhost
....
今度は大丈夫っぽいです。
(2) 新しいリポジトリ
# git remote addで不具合のあるリポジトリを追加する
$ git remote add old-origin ../old-origin
$ git fetch old-origin
(少し時間がかかります)
$ git branch work old-origin/svn/master
$ git rebase --onto svn/trunk old-origin/trunk work
$ git diff old-origin/master work
$ git svn dcommit
$ git remote add old-origin ../old-origin
$ git fetch old-origin
(少し時間がかかります)
$ git branch work old-origin/svn/master
$ git rebase --onto svn/trunk old-origin/trunk work
$ git diff old-origin/master work
$ git svn dcommit
コミットのユーザー名が変更されてしまいました
svn: [なし]
git: (no author) <(no author)>
config key: svn-remote.<name>.commiturl
git svn dcommitの問題点
- ユーザー名をきちんと設定しないと (no author) でコミットされてしまう。
- svn側では空フォルダ残る
gitはフォルダに対応していないので、gitでフォルダを消してもsvn側では空フォルダが残っている - 数コミットでもdcommitが終わるまで時間がかかる
svnの利点は
gitと違って、先に -f で コミット壊されたとかいうのがないのでいい。
svnはコミットすればするほどサーバーとクライアントの両方でファイルがどんどん増えていくので
適当なところで、移行したい。
コミットしたらサーバーに送るように設定したらsvnと同じような運用にできる? 競合したらpushエラーでわかる。
post-commit フック
git branch -u origin/対象ブランチ名
cd .git/hooks/
cp post-commit.sample post-commit
nano post-commit
git branch -u origin/対象ブランチ名
cd .git/hooks/
cp post-commit.sample post-commit
nano post-commit
.git/hooks/post-commit
git --git-dir=.git push origin
fatal: no upstream
git branch -u origin/対象ブランチ名
コミット前に自動コード整形もしたい?破損する?
.git/hooks/pre-commit
#!/bin/sh
# Execute app1
./app1
# Check the exit status
if [ $? -ne 0 ]; then
exit 1
fi
要点: (1) スクリプトで書く (2)コミットを認めない場合は exit 1を呼ぶ (3) chmod +x pre-commit を忘れずに# Execute app1
./app1
# Check the exit status
if [ $? -ne 0 ]; then
exit 1
fi