プロが教えるわが家の防犯対策術!

WEB制作におけるバージョン管理について
WEBサーバー引越しにあたり、バージョン管理システム導入を検討しています。
有名なところではsubversionやgitなどのシステムがあるようですが、ネット上にあるそれらの情報のほとんどがソフトウェア開発向けのもののようで、WEB制作にフィットした内容が見当たりませんでした。バージョン管理自体未経験なのですが、そもそも自分の考えていることが可能なのかどうかを質問させてください。

現在の制作スタイルは、ローカルにテスト用サーバーをたて、別PCからLAN経由で直に対象ファイルを操作し、デバッグ・プレビュー、最終的に本サーバーへアップするというものです。バックアップは定期的にフルと差分を走らせています。この環境では、複数人での作業の場合に対応が難しいのと、完全にローカルサーバーに依存したシステムにリスクを感じています。そこで、リモートのサーバーにsubversionなりgitなりを導入して、以下のようなことができたら便利だなと思っています。

・直に本サーバーのファイルを変更するのではなく、サブドメインなどのテスト環境で修正、デバッグ、プレビューを行ない、最終的に本サーバーへ反映したい。

・本サーバーとテスト環境で、変更ファイルだけを更新できるシステムにしたい。できれば、手動ではなく自動認識させたい。

・ローカル側のファイルは複数人で共有したい。同期ではなく、ネットワーク上の同じファイルにアクセスしたい。リポジトリの概念が分かっていません。ロールバックを共有できるのかという意味になるのかもしれません。


本サーバーをSVNサーバーとして、テストサーバー、各ローカルPCをSVNクライアントにする、というイメージを持っているのですが、実際のところは可能なのでしょうか。
見当はずれな質問でしたら、ご容赦ください。

A 回答 (2件)

> WEB制作の場合、動作確認を行うにはApacheが必要になると思います。


> 各開発者ごとに作業コピーをローカルに取得するということは、各開発者のPCごとにApacheを導入して、かつ同じ設定をして、動作確認をとるのでしょうか。

各自のローカルに apache なりWEBサーバを立てることもあります。
そうでない場合は、別途動作確認用の開発サーバとしてそこにUPする場合もあります。

> ちょっとそれは考えにくかったので、ローカル(複数の開発者が同じローカルネットワークにいるという前提)では、1つのローカルサーバーにあるデータに集中してアクセスできる仕様であれば、Apacheを共有できて楽なのかなと思い、「ローカル側のファイルは複数人で共有したい。同期ではなく、ネットワーク上の同じファイルにアクセスしたい。」という質問になりました。

それはバージョン管理は関係なくて、ただのファイル共有ではないでしょうか?

うーんと、SVNの場合はチェックアウトしたユーザでコミットします。
(環境変数を使えば切り替えることができるかもしれませんが、オペレーションミスで、
自分が修正したファイルではないものをコミットする可能性があるのでおすすめしません。)
おっしゃるように、共有フォルダにチェックアウトしたソースをみんなで修正すると言うことは、暗黙的に同じSVNアカウントでのコミットする思うので、それではソースを誰が更新したか分からなくなるため、構成管理としてはナンセンスな感じがします。
    • good
    • 0
この回答へのお礼

> それはバージョン管理は関係なくて、
> ただのファイル共有ではないでしょうか?

そうですね。質問したかったのは、ファイル共有とバージョン管理を同時に効率よく行えるかということだったかもしれません。おっしゃるように、人によってturnkやburnchの切り方が異なるでしょうから、複数人が同じSVNアカウントで管理するのは無理がありそうですね。


> 別途動作確認用の開発サーバとしてそこにUPする場合もあります。

こちらの線でもう少し調べてみます。
お付き合いいただきありがとうございました。
大変参考になりました。

お礼日時:2010/09/27 18:19

Subversion を使っているので、Subversion( 以下 SVN )の場合でお答えします。



> 本サーバーをSVNサーバーとして、テストサーバー、各ローカルPCをSVNクライアントにする、というイメージを持っているのですが、実際のところは可能なのでしょうか。

本サーバもテストサーバもローカルも、全てSVNから見た場合はクライアントになります。
SVNサーバはリポジトリ(作業履歴のコンテナ)でしかありません。

> ・直に本サーバーのファイルを変更するのではなく、サブドメインなどのテスト環境で修正、デバッグ、プレビューを行ない、最終的に本サーバーへ反映したい。

可能です

> ・本サーバーとテスト環境で、変更ファイルだけを更新できるシステムにしたい。できれば、手動ではなく自動認識させたい。

可能です

> ・ローカル側のファイルは複数人で共有したい。同期ではなく、ネットワーク上の同じファイルにアクセスしたい。リポジトリの概念が分かっていません。ロールバックを共有できるのかという意味になるのかもしれません。



僕の現場では複数の開発者が、リポジトリより最新の作業コピーをローカルに取得し、開発作業を行ないます。
ローカルで動作確認を取れたものはリポジトリにコミットします。
コミットはいつでもできますが、動作したものをコミットするというルールにしています。

開発サーバでも作業コピーを取得しておき、DocumentRootに設定しています。
定期的に、リポジトリの修正分を取り込むように cron にシェルを登録しています。

リリース管理をチーム内(客先を含む)で決めておき、開発サーバでの試験がOKでしたら、
その時点での作業コピーに名前をつけます。( trunk -> tags )

本番サーバでは、先に名前をつけたものをリポジトリから取得するようにしています。

SVNでは作業コピー内に .svn ディレクトリが作成されますが、ここから外部にリポジトリ情報が漏れることがないように、チェックアウトした作業コピーではなくエクスポートしたものを使うようにしています。
    • good
    • 0
この回答へのお礼

貴重な情報をありがとうざいました。
大変参考になりました。
3つめの項目についてなんですが、

> 複数の開発者が、リポジトリより最新の作業コピーをローカルに取得し、
> 開発作業を行ないます。

WEB制作の場合、動作確認を行うにはApacheが必要になると思います。
各開発者ごとに作業コピーをローカルに取得するということは、各開発者のPCごとにApacheを導入して、かつ同じ設定をして、動作確認をとるのでしょうか。

ちょっとそれは考えにくかったので、ローカル(複数の開発者が同じローカルネットワークにいるという前提)では、1つのローカルサーバーにあるデータに集中してアクセスできる仕様であれば、Apacheを共有できて楽なのかなと思い、「ローカル側のファイルは複数人で共有したい。同期ではなく、ネットワーク上の同じファイルにアクセスしたい。」という質問になりました。

お礼日時:2010/09/26 19:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!