8

(他の場所で答えを見つけることができなかったので、自分で答えるつもりでこの質問を投稿しています。うまくいけば、同じ問題に遭遇した他の人を助け、次に私がやろうとしているときに役立つでしょう。)

チャレンジ

SVN リポジトリをローカルでホストされている gitlab GIT リポジトリに変換し、履歴を維持したいと考えています。

セットアップ

Gitlab 8.5、Ubuntu 14.04 LTS、サブバージョン 1.8.8

問題

最初に git-svn または svn2git を使用して svn から git に変換しようとすると、次のエラーが発生しました。

エラー

svn-remote.svn: remote ref '//example.com:81/svn/myrepository/trunk:refs/remotes/trunk' must start with 'refs/'

私が試したこと

以下の外部参照の両方のガイドに従いました。

使用される外部参照

4

3 に答える 3

13
  1. author.txt ファイルを生成します。これには、SVN ユーザーと Gitlab ユーザー間のマッピングが含まれます。

    • 既存の svn リポジトリから:svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors.txt
    • それ以外の場合は、次の形式に従って手動で作成します。

      oldSVNusername = newGitlabUsername <gitlabRegisteredEmailAddress@example.com>

  2. 一時ディレクトリ init SVN リポジトリを作成する

    • mkdir temp
    • cd temp
    • git svn init --no-metadata http://username:password@example.com:81/svn/myrepository
  3. git を構成する

    • git config svn.authorsfile ~/authors.txt
    • git config --global user.name myusername
    • git config --global user.email myusername@example.com
  4. ファイルを取得し、それらを新しい git リポジトリにクローンします

    • git svn fetch
    • git clone . ../myrepository
    • cd ../myrepository
  5. gitlab で新しいリポジトリをセットアップし、ユーザーがアクセスできることを確認します。

  6. リモート gitlab リポジトリを追加する

    • git remote add gitlab gitlab.example.com:gitlab-group/myrepository.git
  7. 構成を再確認してくださいmyrepository/.git/config(特に URL 行)。

    [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = /root/temp/. fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = gitlab merge = refs/heads/master [remote "gitlab"] url = http://gitlab.example.com/gitlab-group/myrepository.git fetch = +refs/heads/*:refs/remotes/gitlab/* [user] name = myusername

  8. すべてを上流にプッシュ

    • git push --set-upstream gitlab master

これで、すべてのファイルと履歴が git に変換され、gitlab に表示されるはずです。

于 2016-03-09T19:20:16.200 に答える