web-dev-qa-db-ja.com

BitbucketからGithubへのHGプロジェクトのミラーリング

主にHgを使用してbitbucketでホストされているプロジェクトをgithubにミラーリングするための効率的なワークフローはありますか?

55
Santa

hg-git のようなツールを使用して次のことができます。

  • プッシュアクセスできる場所にGitリポジトリをセットアップします。
  • 次に、プロジェクト内からhg Push [path]を実行します。例えば:
$ cd hg-git # (a Mercurial repository)
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created
$ hg Push git+ssh://[email protected]/schacon/hg-git.git
$ hg Push

これにより、すべてのMercurialデータがGitオブジェクトに変換され、Gitサーバーにプッシュされます。
そのパスを[paths].hg/hgrcセクションに配置して、名前でプッシュすることもできます。

hg-git

40
VonC

プロジェクトにMercurialを使用すると、プロジェクトのgitミラーをすばやく簡単に作成して、gitユーザーが貢献できるようになります。 hg-gitを使用してGitHubでMercurialミラーを管理する方法についてのチュートリアルを作成しました。

GitHubアカウントの使用を開始する方法、MercurialからGitHubにプロジェクトをプッシュする方法、GitHubからの投稿(プルリクエスト)を受け入れる方法について説明します。ブログ投稿へのリンクは次のとおりです。 http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/

13
Steve Losh

git-remote-hg をbinパスに追加します。次に、 githubに記載 としてミラーリングできます。

git clone --mirror  hg::https://bitbucket_repo

次に、クローンリポジトリに移動します

git remote set-url --Push Origin https://github.com/exampleuser/mirrored

最後に、ミラーを同期します

git fetch -p Origin
git Push --mirror
10
jbtule

2013年7月の時点で、 BitSyncHub BitBucketの受信後フックを介してこのプロセスを自動化するためのWebサービスがあります。ただし、GitHubリポジトリにサービスの書き込み権限を付与する必要があります(寄稿者としてbitsynchubを追加します)。

6
kynan

私は2019年2月から報告しています。私はちょうどこの問題に遭遇し、 @ voncの提案 を使用して hg-git を使用し、それを機能させるためにいくつかの不足している手順を埋めました。ここでは、より詳細なガイドを提供します。

  1. repository のクローンを作成し、〜/ .hgrcファイルの「extensions」セクションを次のようにしてhg-gitをインストールします。
[extensions]
hggit = [path-to]/hg-git/hggit

ソースリポジトリで最新のインストール手順を見つけました: https://bitbucket.org/durin42/hg-git 。だから目を離さないでください。

  1. インストール dulwich まだの場合:pip install dulwich

  2. GitHubに新しい空のリポジトリを作成します(例: https://github.com/user/git-mirror )。

  3. Hgソースリポジトリのクローンを作成し、それをgitミラーにプッシュします。

$ hg clone https://bitbucket.org/user/hg-source
$ cd hg-source
$ hg Push git+ssh://[email protected]/user/git-mirror.git
2
qobilidop

すばやく変換するためのもう1つの利用可能なソリューション: https://github.com/frej/fast-export

1

Git-hgミラーサービス を使用してこれを行うことができます(GitHubリポジトリをBitbucketにミラーリングすること、または双方向で同期することを含む)。

0
Piedone