SubversionでTortoiseSVNを使ってCakePHPの開発をしています。

現在のソース一式(appディレクトリ)をSubversionにインポートしましたが、それをチェックアウトで取得する際にわざわざappディレクトリを空にしているのですが、手法として正しいでしょうか?
なお、この方法だと随所で解説されているtrunkやtagが使えません(使えなくても問題ない?)。
良い方法やテクニックなどありましたらご教授ください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/22 21:28:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:khazad-Lefty No.3

回答回数181ベストアンサー獲得回数27

ポイント30pt

これが一般的かはわからない自己流ですが。私はこんな感じでやってます。

条件:appフォルダ配下のみをバージョン管理

  1. 既存のappフォルダをリネーム(app_ など)→バックアップも兼ねる
  2. 新規でappフォルダを作成(空のフォルダ)
  3. リポジトリブラウザ上でapp、およびその配下にtrunc,tagsなどのフォルダを下記のように作成する。
リポジトリ
 `--app
     |--branches
     |--tags
     `-- trunk
  1. 2で作成したappフォルダを右クリック、チェックアウトを選択、対象として上記リポジトリのapp/trunkを選択
  2. app_ 内のファイルをappフォルダに上書き
  3. appフォルダを右クリック、コミットを選択。
  4. 全ファイルにチェックを入れ(これで「追加」になる)OK

結果的に、app/truncをローカルのappフォルダにチェックアウト,コミットを行う感じですね。

id:umakoya

ありがとうございます。手順など参考になりました。

「app/trunkを選択」がポイントですね。

2008/09/17 23:43:09

その他の回答3件)

id:y3b5 No.1

回答回数32ベストアンサー獲得回数3

ポイント15pt

私は、最新版ソースをリポジトリから取得する場合は、

トップディレクトリを選択して「SVN 更新」を使っています。


これなら、変更されたファイルだけが上書きされるかと思います。


同様の操作法を解説していると思われるサイトのURLを書いておきます。

http://www.gside.org/Gentoo/subversion/subversion_client2.html

id:umakoya

URLは確認しましたが、開発環境と別に作業スペースを設けず、そのまま開発フォルダを改版していく方法を検討しています。

2008/09/17 21:30:36
id:zero-uhura No.2

回答回数14ベストアンサー獲得回数3

ポイント15pt

状況をつかみかねますが、以下のようなスタイルですよね?

運用

開発環境で改変
 ↓ コミット(svn ci(commit))
リポジトリ
 ↓ アップデート(svn up(update)、最初はco(checkout))
公開環境を更新

空にせず、app/ 以下で「svn up」コマンドを実施してみてはいかがですか?

あと、branches, tags, trunk などはスタンダードな命名則です、リポジトリの構成次第で「随所で解説されている」方法が可能かと思います。

リポジトリ
 |-- branches
 |   |--v1.0.1
 |   |  `-- Sources 
 |   |       `-- app 
 |   `--v1.0.2
 |-- tags
 |   `--v1.0
 |      `-- Sources 
 |           `-- app 
 `-- trunk
     `-- Sources 
           `-- app 

最後に質問内容とはズレますが、webroot以下にも.svnディレクトリができますので.htaccessかなにかで.svnディレクトリへのアクセスを拒否された方がよいかと思います。


コマンド×TortoiseSVN 対応表

  • svn up = 右クリック→SVN更新
  • svn ci = 右クリック→SVNコミット
  • svn co = 右クリック→SVNチェックアウト
id:umakoya

詳細な説明をありがとうございます。

現状を補足しますとローカルで開発しています(まだ公開していません)。

C:\xampp\htdocs\cake\app

このappを直接リポジトリにインポートし、再び取得する際にappを空にしています。

またbranchesなどのフォルダを作成すると、

C:\xampp\htdocs\cake\app\branchesとなってしまい動作しないと思った次第です。

2008/09/17 21:28:42
id:khazad-Lefty No.3

回答回数181ベストアンサー獲得回数27ここでベストアンサー

ポイント30pt

これが一般的かはわからない自己流ですが。私はこんな感じでやってます。

条件:appフォルダ配下のみをバージョン管理

  1. 既存のappフォルダをリネーム(app_ など)→バックアップも兼ねる
  2. 新規でappフォルダを作成(空のフォルダ)
  3. リポジトリブラウザ上でapp、およびその配下にtrunc,tagsなどのフォルダを下記のように作成する。
リポジトリ
 `--app
     |--branches
     |--tags
     `-- trunk
  1. 2で作成したappフォルダを右クリック、チェックアウトを選択、対象として上記リポジトリのapp/trunkを選択
  2. app_ 内のファイルをappフォルダに上書き
  3. appフォルダを右クリック、コミットを選択。
  4. 全ファイルにチェックを入れ(これで「追加」になる)OK

結果的に、app/truncをローカルのappフォルダにチェックアウト,コミットを行う感じですね。

id:umakoya

ありがとうございます。手順など参考になりました。

「app/trunkを選択」がポイントですね。

2008/09/17 23:43:09
id:hidetoz No.4

回答回数88ベストアンサー獲得回数8

ポイント30pt

>現在のソース一式(appディレクトリ)をSubversionにインポートしましたが、それをチェックアウトで取得する際にわざわざappディレクトリを空にしているのですが、手法として正しいでしょうか?


正しいと思います。

ただし、他の方の解説にあるように「"app"を"app_"などにリネームしてからインポート」、「新しく"app"フォルダを作ってチェックアウト」のほうがスマートだと思います。慣れるまでは操作を間違えやすいので"app_"のバックアップに助けられることが出てくると思います。


>なお、この方法だと随所で解説されているtrunkやtagが使えません(使えなくても問題ない?)。


他の方の解説にもありますが、ローカルのルートフォルダとリポジトリルートフォルダを1対1で対応させるわけではありません。リポジトリ側は管理が容易なツリー構成にしておき、その中の特定のフォルダだけをローカルにコピーして使うイメージです。ローカルとリポジトリは全く違う物だということを忘れないで下さい。


以上を踏まえて「trunk/branch/tagsが必要か?」という質問にお答えしますが、この手法を使うことをお勧めします。仕事で使うようなソースをバージョン管理し始めると、かならずbranchやtagsが欲しくなると思います。その時になってからリポジトリ構成を変更するのは大変ですから、trunkだけでも作っておいてください。

id:umakoya

適切な回答、アドバイスをありがとうございます。

>ローカルのルートフォルダとリポジトリルートフォルダを1対1で対応させるわけではありません。

この部分をいまいち理解していませんでした・・・。

2008/09/18 18:07:07
  • id:umakoya
    まだ回答受付中ですが、伺った意見を参考にSubversionの手順をブログにまとめてみました。
    http://umakoya.com/blog/log/eid505.html
    間違いの指摘やアドバイスなど頂けると助かります。
  • id:zero-uhura
    zero-uhura 2008/09/18 21:32:43
    ブログ拝見しました、すばらしいですね。

    ところで、tmp の扱いですが私は以下の (*) マークのディレクトリに属性(右クリック→TortoiseSVN→属性)で属性名「svn:ignore」、属性値「*」を設定しています。

    こうすることで、tmp 以下のディレクトリ構成は管理され、それ以下の動的に生成されるファイルを管理外とすることができます。

    app/tmp
    |-- cache
    |  |-- models (*)
    |  |-- persistent (*)
    |  `-- views (*)
    |-- logs (*)
    |-- sessions (*)
    `-- tests (*)

    ご参考にしていただければ幸いです。
  • id:khazad-Lefty
    すごくわかりやすいです。あと、「削除-ローカルファイルを保持」の使い方は知らなかったので勉強になりました。ありがとうございます。
  • id:umakoya
    >zero-uhura
    tmpにつては以下のフォルダ全てに設定するんですね。
    tmpフォルダだけ設定して苦戦してました。

    >hazad-Lefty
    「削除」については「ignore」ができない苦戦のたまものです・・・。

この質問への反応(ブックマークコメント)

トラックバック

  • CakePHP初心者がSubversionを使う。 陽のあたらない美術館 -人間再生- 2008-09-18 20:40:03
    初心者がCakePHPを始める件、CakePHPガイドブックのサンプルをなぞる作業も終わり、いよいよ自分の思い描くウェブ・アプリの開発となります。ここからは後戻りができない未知の領域。色々
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません