2012-08-23 14 views
10

リモートサーバー上でgitリポジトリを実行しています。私はそれが私のローカルのWindows 7マシンの代わりに私のコードを保存することができますので、それはリモートサーバー上のサンバ共有を設定している。 svnは非常に遅くて信頼性が低いので、私たちはgitの使用を検討しようとしています。私たちがgitで抱えている問題は、コミット/クローン/サンバ共有にプルするとスーパースーパーが遅くなります。コミット/クローン/私のWindows 7のマシン上のローカルディレクトリにプルを行う場合、それは素晴らしい作品ですが、私たちはリモートサーバー上にあるコードが必要です。何か案は?私は本当にそれを使用することができます。GitはSamba共有で非常に遅いコミットを行っています。私はそれをスピードアップするために何ができますか?

編集:

私も、私はすでにgitのGC --aggressiveを走っていると、それはそれをスピードアップしていないことを言及する必要があります。

+0

サーバーでgitコマンドを実行し、サーバーのドライブにrepoを実行していますか?または、コマンドをローカルで実行しますが、リポジトリは共有サーバーのドライブにありますか?あなたは最初にやるべきです。 – kan

+0

ローカルマシン上でgitコマンドを実行します。これはsamba共有上のコードを調整します.Samba共有はWeb開発サーバー上でホストされているので、私たちのコードが何であるかを見ることができます。各開発者は共有上に独自のフォルダを持っています。私たちは、私たちのレポを保存しているリモートサーバに変更をプッシュします。 –

+2

はい、間違った方法です。たぶんあなたはその逆をすることができます - ローカルにレポを持っているが、Webサーバーはdevのコンピュータの共有フォルダを使用します。そうしないと、他のパフォーマンスの問題が発生します。 find-in-filesは共有よりもローカルドライブではるかに高速です。 – kan

答えて

2

この設定でGitを使用することはできません。 これはF1を手に入れたときのようなものです。

Gitは、DVCSまたは分散バージョンコントロールです。つまり、すべての開発者がクローンを取得します。何をする必要が

セットアップは、Sambaマシン上のgitのサーバリポジトリで、HTTPまたは

あなたはGithub

+2

ウェブサーバーなので、リモートで実行する必要があります。私たちの個々のマシンはWebサーバーではありません。 –

+1

私はそれを取得しません。 gitサーバだけがWeb対応にする必要があります。クライアントはhttp/sshを使ってアクセスします –

+1

個々の開発者はそれぞれリポジトリのクローンを持ちます。そのクローンをWebサーバーに保存して、他のすべての開発者にコードをプッシュする前にコードをテストできるようにします。私たちはすべて、Sambaのシェアを使ってローカルマシン上のコードにアクセスします。私はWebサーバー上にないリモートリポジトリをセットアップしましたが、コードを保持するだけの場所です。 –

3

I上でより良いGitBlit またはアカウントのようなプロジェクトを使用することができますssh経由レポにアクセスGitのSMB共有に対するパフォーマンスと同じ問題がありました。残念ながらローカルマシン上で開発コードを実行することはできませんので、SMBを使用してリモートディレクトリをマウントし、ローカルマシン上の適切なテキストエディタを使用してソースファイルを編集します。

私はリポジトリにコミットするときにいくつかの慰めが必要なので、私は自分のローカルマシン上で実行されるGUIクライアントを好みます。言及されたパフォーマンスの問題では、これはややこしいことですが、多くの時間がかかります。

ただし、少し洗練された回避策が見つかりました。リポジトリに何かをコミットする前に、私はこのように、rsyncを使用して、私のローカルハードドライブにリモートソースのコピーを引っ張っ:

rsync -az --progress --exclude ".git" [email protected]:/home/myapp/sourcecode /Devel/portal-mirror 

それは完全な1対1を行うには秒未満を取るその方法diffとコミットを行う前にリモート状態の同期(私のGitアプリケーションのキーボードショートカットにこれをバインド)してください。魅力のように動作します。コミットしてリポジトリにプッシュした後、変更を同期化するためにdevサーバ上でgit reset --hardgit pullを実行するだけです。

2

私たちはgitとsambaをphp-stormと組み合わせて同じ設定をしています。それはかなりうまく走っています。私が巨大なプロジェクトで "SourceTree"を使用しようとする時だけ、リフレッシュするまでに時間がかかります。サンバを探しているとき

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 

は、その行が見つかり:

設定ファイル:少しSambaサーバーのチューニングにした、

ことの一つは、私が試した、と私はそれのうちマイナーなパフォーマンスの向上を得ましたスピードアップ。

もう1つの解決策は、バックグラウンドで常時実行されている1対1の同期である可能性があります。おそらく、rsyncはやや変更される可能性があります。

0

パラダイムを少し逆にして、開発者のマシン上にWebサーバーの共有をマウントすることをお勧めします。こうすることで、すべてのクローニング/コミット/コーディングがローカルで行われますが、各開発者のサイトは単純にシェアからホストされます。

あなたのウェブサーバが各ウェブサイトのルートディレクトリをsamba共有として公開していると仮定します。開発者は、その共有を自分のローカルマシンにマウントし、リポジトリをクローンし、共有から機能します。そのような場合のパフォーマンスは悪くなりがちですが、バイト範囲のロック要求(BRL)などにも問題が発生する可能性があります。

代わりに、各開発者のコ​​ンピュータ上のディレクトリに直接クローンし、そのディレクトリを共有することもできます。 Webサーバーはその共有をマウントします。

もちろん、各開発者はWebサーバーのインスタンスを実行するのが理想ですが、質問を正しく読んでいれば、この場合はオプションではないかもしれません。

関連する問題