4

私は主にGitを使用しており、githubに多くのコードがあります。また、Mercurialを使用している人のために、Bitbucketにもインストールしたいと思いますが、もっと重要なのは、ドミアンにもコードを追加したいということです。BItbucketは、ホストされたコードのCnamesをサポートしています。

ですから、私が主にGitで作業する方法はありますが、HGにプッシュすることもできます。

Githubは別の方向(HGリポジトリからgitへ)のプロジェクトを作成しましたが、私が探している方向のプロジェクトはあります。

4

2 に答える 2

7

これを他の回答に追加するつもりでしたが、少し時間がかかったので、別の回答として行います。

両方の方法を使用する場合は、hg-githgを使用してマシン上のリポジトリのバージョンを取得できます。引き続きGitですべての作業を行うことができます。つまり、仲介者としてGitHubを使用することになります。

$ cd src
# do some work
# push to GitHub
$ cd ../hg
$ hg pull
$ hg push bitbucket

ただし、Mercurialユーザーから変更をプルしたい場合は、それらをリポジトリにプルしhgてGitHubにプッシュできるという利点があります。

$ cd hg
$ hg pull someotherrepo
  # Probably merge
$ hg push # Changes go to GitHub
$ cd ../src
$ git pull
  # Continue working in Git
于 2010-07-09T18:08:24.357 に答える
4

Gitリポジトリのミラーリングを行っているだけの場合は、cronジョブを設定して次のスクリプトを実行できます。

#!/bin/bash

USER=bitbucketuser
ERROR_FILE=clone_update_err
CLONES=/path/to/clones

cd $CLONES

if [ $# -ne 1 ]; then
    for DIR in *; do
        if [ -d $DIR ]; then
            ./update.sh $DIR 2> $ERROR_FILE
            if [ -s $ERROR_FILE ]; then
                echo $DIR >&2
                cat -n $ERROR_FILE >&2
            fi
        fi
    done
else
    DIR=$1
    echo $DIR
    cd $DIR

    if [ -a source ]; then
        cd source
        if [ -d .hg ]; then
            hg pull
        elif [ -d .git ]; then
            git pull
        elif [ -d .bzr ]; then
            bzr pull
        elif [ -d .svn ]; then
            svn up
        else
            echo "$DIR is not a known repository type."
            return 1
        fi

        cd ..
        hg convert source hg

        URL=ssh://hg@bitbucket.org/$USER/$DIR/
        cd hg
        hg pull $URL
        hg push $URL # You can add -f here if you don't mind multiple heads
        cd ..
    else
        # hg dir or hg-git
        cd hg
        hg pull
        hg push $URL
        cd ..
    fi

    cd ..

    sleep 5
fi

これは、SSHキーがインストールされていることを前提としています。ご覧のとおり、他のVCSもミラーリングされます。次のようなディレクトリ構造を想定しています。

clones/
  project1/
    source/  # Original Git/Bazaar/SVN/Mercurial repo
    hg/      # Mercurial repo

明らかに、これは一方向にすぎませんが、Gitですべての作業を行う場合は、問題にはなりません。

于 2010-07-09T18:03:55.767 に答える