GNU/Linux >> Linux の 問題 >  >> Linux

Gitlab のインスタンス間でリポジトリを移行する

最近、gitolite から gitlab と公式の rake タスク gitlab:import:repos に移行しました 私のために働いた。 gitlab 6.1.0 (82f3446) を使用しています。これが私がしたことです:

  • rsync gitolite から repositories/{group}/ までの裸のリポジトリ . {repository} を必ず置き換えてください を gitolite リポジトリの名前に変更し、gitlab サーバーのホスト名を変更します。

    rsync -rth --progress repositories/{repository}.git \
    [email protected]:/home/git/repositories/{group}/
    

    ここでは、{group} リポジトリを追加するユーザー グループの名前です。特定のグループがない場合は、root を選択してください グループ名として。

  • アクセス許可を修正 - rsync の場合にのみ必要 ユーザーは git ではありません :

    sudo chown -R git:git repositories/{group}/
    
  • cd ~/gitlab

  • rake タスクを実行して、すべての新しいリポジトリをインポートします:

    bundle exec rake gitlab:import:repos RAILS_ENV=production
    

管理者としてログインすると、新しいプロジェクトが追加されていることがわかります。

詳細については、http://{your-gitlab-server}/help/raketasks の「ベア リポジトリを GitLab プロジェクト インスタンスにインポートする」を参照してください。 .

あなたの場合、古い TKL システムにログインし、すべてのベア リポジトリを新しいインスタンスに再同期してから、インポートすることができます。


1 つのオプションは次のとおりです。

<オール>
  • 古いリポジトリを gitlab から開発マシンにクローンします。
  • 新しい gitlab に空のリポジトリを作成します。
  • 新しいリポジトリをリモートとして開発マシンに追加します。
  • すべてを新しいリポジトリにプッシュします。
  • リモート リポジトリ リストから古いリポジトリを削除します。
  • newRepo という名前のリモートを作成するには、次のようにします:git remote add newRepo gitlab.localhost.com:User/newRepo.git (末尾の URL をレポの URL に置き換えます)


    ChrisAの回答を読んだ後、実際には次の方法でそれを行いましたが、実際にそれを行う方法について少し頭痛がしました。この例では、リポジトリを github から gitlab にコピーして、ソースと宛先を少し明確にしています。

    <オール>
  • 古いリポジトリを github から開発マシンにクローンします (ベア リポジトリが作成されます):

    $ git clone --mirror [email protected]:me/myrepo.git
    
  • 新しい gitlab に空のリポジトリを作成します。

  • 新しいリポジトリを開発マシンにリモートとして追加します。

    $ cd myrepo.git
    $ git remote add newRepo [email protected]:me/myrepo.git
    
  • すべてを新しいリポジトリにプッシュします。

    $ git push --mirror newRepo
    
  • 以上です。

    このようにして、すべてのブランチとタグが新しい宛先にコピーされました。

    これで、複製されたベア リポジトリを開発マシンから削除できます。


    Linux
    1. Gitオートコンプリート?

    2. Gitスイッチとチェックアウトの違いは何ですか?

    3. CentOS7にGitLabをインストールします

    1. Debian10にGitLabをインストールする

    2. Ubuntu18.04にGitLabをインストールします

    3. サーバーフレーバー間を移行する

    1. ローカルの git リポジトリがリモートの前後にあるかどうかを確認する

    2. ある Git リポジトリから別のリポジトリにコミットをコピーする方法は?

    3. WindowsとLinuxを切り替えた後、gitはインデックスを強制的に更新します