私は問題なく作業してきた作業コピーリポジトリを持っています。このリポジトリのOriginはGitHubにあります。
作業コピーリポジトリをビルドマシンのOriginとして利用できるようにしたい(VM別の物理ホスト上))、作業コピーに行ったコミットをビルドしてテストできる最初にGitHub経由でビルドする必要はありません。GitHubリポジトリのビルドは既に行っていますが、これを「ゴールデン」リポジトリ/ビルドにしたいと考えています。 GitHubはパスすることが保証されている必要があります。
Git URLのドキュメントを見て、git://Host.xz[:port]/path/to/repo.git/
という形式のURLを使用するオプションがあることを確認しました(たとえば、 git-clone documentation を参照)。最小限の構成で、これを可能な限り簡単な方法で実行したいのです。これをビルドマシンに公開するためにSSHデーモンやWebサーバーをセットアップする必要はありません。
Windows 7 x64 RCを実行しています。MSysGitとTortoiseGitがインストールされており、ファイアウォールでGitのデフォルトポート(9814)を開いています。作業コピーリポジトリがD:\Visual Studio Projects\MyGitRepo
にあり、ホスト名がdevbox
であると仮定してください。ビルドマシンはWindows Server 2008 x64です。関連する出力を使用して、ビルドマシンで次のコマンドを試行しました。
D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)
何か不足していますか?
次からプルするためのリポジトリを設定するには、5つの可能性があります。
git clone /path/to/repo
またはgit clone file://path/to/repo
。ネットワーク化されたファイルシステムを使用しているが、ネットワークを非常に効率的に使用していない場合は、作業が最も少なくなります。 (これは Joakim Elofsson )によって提案されたほぼ正確なソリューションですgit clone http://example.com/repo
。 anyWebサーバーが必要です。また、(おそらくフックから自動的に) git-update-server-info を実行して、必要な情報を生成する必要があります。 「ダム」プロトコルによるフェッチ/プル用。git clone ssh://example.com/srv/git/repo
またはgit clone example.com:/srv/git/repo
。 SSHサーバー(SSHデーモン)をセットアップし、クライアントにSSHをインストールする必要があります(MS WindowsのPuTTYなど)。git clone git://example.com/repo
。サーバーで git-daemon を実行する必要があります。詳細については、ドキュメントを参照してください(フェッチする場合にのみスタンドアロンプロセスとして実行でき、サービスとして実行する必要はありません)。 git-daemonはgitの一部です。git clone file.bndl
を使用してクローンを作成します(クローンが機能しない場合は、「git init」、「git remote add」、「git fetch」を実行できます)。この例で不足しているのは、おそらくサーバーでgit-daemonを実行していることです。それ、またはgit-daemonの設定ミス。
残念ながら、MS Windowsでgit-daemonをサービスとして実行することはできません。ただし、git-daemonが機能しないことについては、msysGitの最新バージョンの発表には何もありません。
JakubNarębskiの回答に加えて、別の方法で、元の質問とよりインラインになります。通常のようにgithubからクローンを作成できます。ローカルリポジトリから1回限りのプルを実行する場合は、次のようにします。
git pull /path/to/repo master
(マスターの代わりに、任意のブランチ名を付けることができます。)
最近、gitプロジェクトの1つを変更して、sitecopyを使用して実際のファイルのアップロードを行うHTTPサーバーに自分自身を複製しました。
git update-server-info
を使用してから、.gitディレクトリをサーバー上のhttpアクセス可能なディレクトリにミラーリングするだけです。 「project.git」を使用しましたが、これはかなり一般的です。
http:// site/project-git からのGit pullはチャンピオンのように機能します。また、sitecopyはwebdavもサポートしていますが、サーバー上にFTPアクセス以外のものを置く必要はありません。
ただし、複数のマシンの同期がうまく取れないため、sitecopyの使用はお勧めしません。私のプロジェクトでは、HTTPリポジトリは読み取り専用であり、ゴールドアップデートは1台のマシンからのみ提供されるため、十分に機能します。
Sshルートはうまく機能しますが、リモートsshサーバーが必要です。 Windowsプラットフォームを使用している場合、CygwinはGitで動作するsshサーバーを提供しますが、Cygwin Gitを使用している場合はGitを手動でアップグレードします( http://alecthegeek.wordpress.com/2009/01/21/top-tip-upgrade-git-on-cygwin / )。
次のようなパスがある場合
C:\Project\
すでにgit init
を実行したので、フォルダもあります
C:\Project\.git\
これで新しいフォルダが作成されます
C:\.git\
そのフォルダーに移動し、git clone --bare ..\Project
を実行します(bareが重要です)、C:\Project\
フォルダーに戻り、git remote add-url local ..\.git\Project
を実行します。
これで、git add -A
、git commit -m "HelloWorld"
、git Push local master
を実行できます。
Project
フォルダーを共有し、Z:
に接続して、git clone Z:\Project
を実行できます。今すぐgit pull Origin master
とgit Push Origin master
を使用して、コンピューター間で変更をプッシュ/プルできます。
リモートホストが同じWindowsネットワークにある場合、つまり、\ remotehostとしてアクセスできる場合は、エクスプローラーでネットワークドライブをマッピングできます。z:->\remotehost\repodir、その後 'git clone /プロジェクトを複製するz/myproject '