ベアボーンブラウザ
git instaweb --httpd=webrick
以下からのgit SCM帳
分散開発のためにここで説明したアプローチのようなものと組み合わせます(datagrokへのクレジット十分に説明された概念のへの)
任意のローカルリポジトリから1回限りのgitサーバーを起動します。
私はこれをすでにツイートしましたが、いくつかの拡張を使用できると思いました:
分散型gitワークフローを有効にします:git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-paths .git /"
変更をプルしたり、変更をプッシュしたりするコア「公式」リポジトリの操作を含むgitワークフローを使用するとします。Githubのようなgitホスティングサービスの多くのユーザーがそうであるように、多くの企業がこれを行うと確信しています。
そのサーバーまたはGithubが少しダウンしたとします。
結局のところ、gitを使用する理由の1つは、ローカルクローンにプロジェクト履歴全体のコピーがあるためです。
運用チームがサーバーを復旧させるのを待つ間、コーディングとコミットを正しく行うことができます。自己注意:運用チームのためにドーナツを購入してください。
しかし、このダウンタイム中に、同じリポジトリでgitの専門家ではない可能性がある別の人と共同作業をしたい場合はどうでしょうか。
または、ダウンタイムの代わりに、あなたとあなたの共同作業者が現場にいて、何らかの理由でVPNを取得して公式リポジトリに接続できない場合はどうなりますか?
あるいは、あなたとあなたのコラボレーターがたくさんの実験的な変更を急いで行っており、アクセスはできても、未完成の混乱を公式の中央リポジトリーにプッシュしたくない場合はどうなりますか?(機能ブランチとしても同じではありません。)悲惨なリベースやマージをクリーンアップしている最中で、ブランチがいたるところにあるかもしれません。
よくご存知のとおり、gitは「分散」バージョン管理システムです。
ワークフローで中央の「公式」Gitリポジトリを使用する場合でも、Gitをピアツーピアで使用することができます。この場合、あなたとコラボレーターはコミットをビルドして互いに共有し、中央でサーバーも知る必要はありません。
では、どのようにブランチを取得してコミットするのですか、またはその逆ですか?
- パッチを電子メールで送信するためのgitの機能を使用できます。ただし、これは少し洗練されておらず、電子メールで送信されたパッチを適用する方法についての知識が必要です。
- コラボレーターがsshを実行するために、自分のマシンにアカウントを作成できます。しかし、ローカルルートアクセスがないか、ボックスへのSSHアクセスでローカルルートを信頼していない可能性があります。
- リポジトリをサムドライブに複製して、前後に渡すことができます。しかし、特に同じローカルネットワーク上にいて、サムドライブが必要な場合は、これはかなり退屈な作業です。
他の方法も考えられるでしょう。しかし、非常に簡単な方法があります。ネットワーク上でお互いを見ることができる場合、リモートとして使用できる1回限りのgitサーバーを起動して、変更のクローン、フェッチ、プルを行い、変更を加えることができます。それで終わりました。
これを可能にするツールはでgit daemon
、これには多くのオプションと機能がありますが、この簡単な1回限りの「私がいるリポジトリを提供するだけ」を可能にする目的で、それを使用する方法はエイリアスを作成することです。私はそれを呼ぶのが好きgit serve
です。実行:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
gitエイリアスは作業ツリーのベースディレクトリで実行されるため、エイリアスの使用は実際には非常に重要です。したがって、リポジトリのディレクトリツリー内のどこにいても、パス「.git」は常に正しい場所を指します。
新しいgit serve
ものを次のように使用します。
- を実行します
git serve
。「騒動する準備ができている」と報告します。Gitはひどいです。
- IPアドレスを確認します。192.168.1.123だとしましょう。
- 「ちょっとジェーン、私はこれらのコミットをオリジンにプッシュする準備ができていない/できませんが、実行することで私のコミットをクローンにフェッチできます
git fetch git://192.168.1.123/
」
- そのリポジトリを提供したくない場合は、ctrl + cを押します。
git clone git://192.168.1.123/ local-repo-name
リポジトリのクローンがない場合は、ジェーンに伝えることもできます。または、を使用git pull git://192.168.1.123/ branchname
してフェッチとマージを一度に実行します。機能ブランチで一緒に作業している場合に役立ちます。
ただし、リポジトリに秘密を保持している場合は、悪意のあるネットワークでは認証を行わないため、これを行わないでください。それはその存在を宣伝しませんが、ポートスキャナーを持っている人なら誰でもそれを見つけて接続し、リポジトリを複製できます。
ただし、デフォルトでは読み取り専用であるため、それほど危険ではありません。読むgit daemon
書き込みアクセスを有効にする場合 manページをよくください。コラボレーターのコミットを取得したい場合は、それを読み取り専用のままにして、コラボレーターにこのコマンドも実行するように依頼する方がはるかに安全です。
接線的に関連:HTTPを介して一連の静的ファイルを一時的に共有する場合は、1回限りのサーバーを対象とします。 python -m SimpleHTTPServer