2011-01-13 9 views
8

私はSVNに新しく、何かが詰まっています。最も長い時間の間、私は地元のWebサイトを開発していました(MAMP設定)。そして準備ができたら、サイト全体をライブでftpします。私がライブサイトに直接行った小さな追加変更は、ライブサーバー上のすべてのファイルをローカルホストに再ダウンロードします(私が変更したファイルのすべてを覚えることはできないため)。明らかに、これは最善の方法ではありません。私は、ライブWebサーバー上でSVNをセットアップする方法が不思議に思っていたので、私がそれを話すときにローカルで行うすべての変更をWebサイトにプッシュします。どこでsvn repoを作成しますか? /domain.com/www/svn?実際のレポとしてwwwディレクトリを作成することはできますか?もしそうなら、この悪い習慣はありますか?ライブapacheサーバーでsvnを使用するには?

+1

ライブWebサーバーはSubversionサーバーに接続できますか? – jgifford25

答えて

7

Webサーバーディレクトリにリポジトリを作成しないでください。それがあなたの問題の最初の部分です。

あなたのリポジトリはどこでもライブでき、ウェブサーバのディレクトリに置かないでください。

するときは、セットアップのApache HTTPD(それはあなたが使用しているものだ場合)、このようなフォルダをの.svn無視するように設定:ウェブサーバ以外の、

<DirectoryMatch \.svn> 
    Order allow,deny 
    Deny from all 
</DirectoryMatch> 

、どこかに、Subversionを作成しますリポジトリ。あなたのWebサーバーのディレクトリにない他の場所の作業ディレクトリのリポジトリからのチェックアウト。ここであなたのリポジトリにあるすべてのファイルをインポートしてSubversionリポジトリにコミットできます。

これを実行したら、これらのファイルを表示するWebサーバーのディレクトリに移動して、チェックアウトを行うことができます。ウェブサーバのディレクトリにない

  1. Subversionリポジトリ:

    は、次の3つのものを持っている必要があります。

  2. Webサーバーのディレクトリにないのすべてのファイルを含む作業ディレクトリ
  3. Webサーバーのディレクトリにある作業ディレクトリ。

計画は次のとおりです。あなたのWebサーバーのディレクトリにない作業ディレクトリの変更を行います。ここでテストを行い、ここで変更をコミットすることができます。また、ここですべてのテストも行います。

すべてに満足すれば、WebサーバーのディレクトリにあるSubversion作業ディレクトリでsvn updateを実行できます。だから、あなたはウェブサーバの外で仕事をして、テストしてから、svn updateをwebserverディレクトリに入れます。

本当に欲しいのなら、Webサーバーのディレクトリにコードを表すWebブランチを作成できます。次に、あなたが望むすべてのコードをチェックインできます。 Webサイトに実装する準備ができたら、Webブランチにマージすることができます。 Webサーバーのディレクトリ内の作業ディレクトリを更新すると、Webブランチ上のコードだけが取得されます。

実際、ある種のcronジョブでこのプロセスを自動化することができます。あなたのウェブサイトをダウンさせ、あなたのウェブサーバのディレクトリにあるSubversionの作業ディレクトリを更新して、ウェブサイトを再起動します。これは、Webユーザーが見ているファイルがその下から変更されていないことを確認します。

+0

ありがとう、私はあなたが私の質問に答えたと思うが、私はそれを理解するために私の最後にsvnについてさらに調査をしなければならない。私は素早いダイアグラムを考え出しました。これをチェックして、あなたが正しくあなたを理解しているかどうか確認できますか? http://danramosd.com/svn_diagram.png – dan

+0

申し訳ありませんが、私は図を見ませんでした。 [Subversion book](http://svnbook.red-bean.com/en/1.5/index.html)の最初の2つの章では、すべての仕組みが説明されています。これは私が今までに見た中で最も優れたオープンソースマニュアルの1つです。 Subversionは無料であるため、ダウンロードして書籍の例に従ってください。 1週間で、Subversionがどのように機能するか、優れたアイデアが得られます。私は自分のプロジェクトにGitとSubversionを使用していますが、Subversionを好む理由はさまざまです。 –

+0

httpリクエストから.svnフォルダをブロックするのに良いヒント。 –

1

たとえば、あなたが保存する(必ずしもサーバの構造と一致しない)必要なファイルが一致して、セットアップ(あなたのローカルボックス上の)あなたのsvnチェックアウトでの構造だろうI:

my-project 
my-project/docs/README.txt  (any documentation you want to write) 
my-project/www/index.html (etc) 

とそうです。あなたは、サーバー上でコマンドを実行するアクセス権を持っている場合次に、

(1)、Iは、例えば、ログインして行うだろう:

cd /domain.com 
rm -rf www 
svn co https://svn.myserver.com/my-project/www www 

(2)そうでなければ、私は自分のローカルマシン上のファイルをチェックアウトしますそれらをサーバーに渡してftpします。

オプション(1)は優れていますが、オプション(2)でも現在の設定よりも利点があります。サーバー上のファイルを変更する場合は、ディレクトリ全体をローカルのボックスに新しいディレクトリにftpしてから、ファイルをSubversionサーバーに「コミット」することができます。あなたが変更したファイルを知っているSubversion(サーバに/からコピーする必要があるディレクトリ.svn)があります。

関連する問題