3

私はgitに興味を持っています。私は過去数十年にわたってほとんどすべての通常のプレーヤーを使用してきました。現在SVNを使用しており、あまり満足していません。

私は基本を理解していると思いますが、分散型の性質に関する1つの重要な概念を理解していません。 ISPからの動的IPアドレス、および少なくとも1つのレベルのファイアウォール/ NATを使用して、ローカルネットワークアドレスを世界から隠します。

他のホスト/PC/ラップトップを指す有用なDNSエントリがあるわけではありません。そして、ほとんどの(すべて?)ISPは、一般的にどのようにポートを開くかを明確にしていません(確かに、私は家でそれを行うことができますが、ホテルの部屋にいるときはどうですか?)

このFAQへの回答へのポインタは大歓迎です。

4

5 に答える 5

2

これ自体はgitの質問ではありません。たとえば、ラップトップでSubversionリポジトリをホストしている場合、ホテルの部屋にいる間、他の開発者はまだそれと話すのに苦労します。他のプロトコルをトンネリングするか、相互にアクセス可能なリソースにそれらをプッシュすることにより、リポジトリを利用可能にする必要があります。

最悪の場合でも動作可能なケースは、リポジトリが相互に直接通信できないが、パッチを相互に電子メールで送信できる場合ですgit send-email

次のはしごで、も提供するインターネットプロバイダーのシェルアカウントを持っているとします~/public_htmlその場合、 HTTP(S)を介してプッシュおよびプルできるgitリポジトリの設定で説明されているように、そのWebスペースにベアリポジトリを作成します。プッシュはSSH経由で認証され、共同編集者は適切なHTTPURLからプルするようにリモートを設定します。

これは電子メールよりもわずかに優れていますが、遅くて扱いにくいです。現在、gitには、 HTTPのプルオーバーがはるかに高速なスマートHTTPバックエンドの利点があります。スマートバックエンドまたはダムバックエンドのいずれかを使用して、認証を有効にできます。

認証を気にしない場合はgit daemon、誰もがアクセスできるホストからリポジトリを提供することもできます。

両方が同じホストへのシェルアクセスを持っている場合は、そのボックスに接続した直後に作業を交換できます。ここには多くのオプションがあります。

  • フルシェルアクセス:同じアカウント、同じ(集中型)リポジトリ
  • フルシェルアクセス:異なるアカウント、個別のリポジトリ、git pull
  • 共同編集者にシェルアカウントへのgitのみのアクセスを許可する
  • (等々)

上記はピンチで行うかもしれませんが、すべての手動ケアと給餌は面倒になります。その頭痛の種をGitHubまたはGitoriousにアウトソーシングします。

于 2010-07-12T03:32:00.653 に答える
1

どちらも、通常の送信HTTPSリクエストを使用して中央サーバー(GitHubなど)と通信します。

于 2010-07-12T01:26:15.510 に答える
0

間にスタンドアロンのopenvpnトンネルを作成します...

例(暗号なし):

ボックス1(サーバー):仮想IP 10.10.11.5

openvpn --float  --ping 30 --ping-exit 300 --inactive 300 --mssfix 1400 --tun-mtu 1500 --mute-replay-warnings --dev tun --comp-lzo --port 3565 --ifconfig 10.10.11.5 10.10.11.6  --proto tcp-server

ボックス2(クライアント):仮想IP 10.10.11.6

openvpn --remote dynamic_ip_of_server_or_no_ip_hostname --float  --ping 30 --ping-exit 300 --inactive 300 --mssfix 1400 --tun-mtu 1500 --mute-replay-warnings --dev tun --comp-lzo --port 3565 --ifconfig 10.10.11.6 10.10.11.5  --proto tcp-client

次に、ssh ...またはsmbmount、またはNFSマウント...を介してサーバーにコミットします。

于 2010-07-12T01:38:04.953 に答える
0

3つの解決策:

  • 中央サーバー(例:github)
  • VPN
  • IPv6(teredo / miredoはホームセットアップで完全に機能します)+ dynDNS(無料のdynDNS AAAAレコードを実行するものはほとんどなく、私が見つけたのはmajimoto.netだけでした)
于 2010-07-12T01:43:42.007 に答える
0

あなたは両方とも同じローカルプライベートネットワーク上にいないと思いますよね?

SSHトンネルの設定を試み、SSH経由でプッシュ/フェッチすることができます。非標準ポートを使用するようにsshを設定し、ルーターにエクスポートすることができます。DynDNSのような無料のダイナミックDNSサービスの1つを使用できます。

それぞれがGitHubなどのパブリックGitホスティングサイトの1つに無料アカウントを設定し、準備ができたら変更をプッシュし、もう1つは他のパブリックリポジトリから変更をフェッチできます。これにより、ファイアウォールに穴を開ける必要はありません。 /ルーターのポートをエクスポート/NAT。

この図は、 Pro Gitブックの第5.1章「分散ワークフロー」のこの図に似ていますが、祝福されたリポジトリと統合マネージャーの位置がなく、開発者は互いにパブリックリポジトリから直接フェッチしています。

中尉-図http://progit.org/figures/ch5/18333fig0502-tn.png


他のすべてが失敗した場合は、電子メールの添付ファイルやUSBディスクなど、任意のチャネルを使用してgitバンドルをいつでも交換できます。

于 2010-07-12T07:27:49.627 に答える