TortoiseSVN 1.5.3での「無視」について質問です。

http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/tsvn-dug-ignore.html
を読む限りでは、svn:ignoreに"*/obj"を設定すると、配下のobjフォルダが無視されるように思えるのですが、
例) aplフォルダのsvn:ignoreに"*/obj"を設定すると"apl/test/obj"は無視される
実機でテストしたところ、無視されずに「管理外」で出てきてしまいます。

+リポジトリにaplフォルダを作成、空の状態でチェックアウト
+そのフォルダのsvn:ignoreに"*/obj"を設定
+変更をチェック→無視されていない
それとも「無視」はフォルダ個別で設定する必要があるのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2008/09/18 14:12:46
  • 終了:2008/09/21 10:12:57

回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/09/18 20:24:15

ポイント20pt

手元に環境が無いので試せていませんが、該当の文章を見る限り、

CVS フォルダをすべて無視するには、*CVS か、よりよい CVS */CVS といったパターンで指定してください。最初の設定では、ThisIsNotCVS も除外されてしまうでしょう。*/CVS だけでは、直接 CVS フォルダで動作しませんし、CVS だけではサブフォルダで動作しません

との事なので、「obj」と「*/obj」の両方を指定する必要があるのではないですか?

id:khazad-Lefty

あ。説明不足ですね。失礼しました。

質問の例だと、「直接CSVフォルダ」ではないため記述を省略してしまいました。

実際は"obj */obj"と"test/obj"も試しました。(結果としてはNG)

特に"test/obj"でもだめだったので、testフォルダをチェックインしていない状態では効かないのか?と考えている状態です。

あ。そういえばリポジトリはV1.3のFSFSで作成してます。そのあたりも関係しているのでしょうか?

2008/09/18 20:34:40
id:t_shiono No.2

t_shiono回答回数256ベストアンサー獲得回数222008/09/18 22:16:22

ポイント20pt

その仕様ってどうなのという気もするのですが、

*\obj

を指定してみると期待する動作になるかと思います。

何かの参考になれば。

id:khazad-Lefty

やってみたのですが、うまくいかなかったです。

うーん。何か私の環境個別の原因があるのかもしれないですね。

2008/09/19 13:03:46
id:znz No.3

znz回答回数193ベストアンサー獲得回数252008/09/19 19:26:41

ポイント40pt

TortoiseSVNではなくsvnでサブディレクトリの中までsvn:ignoreで指定できるという話は見たことがなかったので、TortoiseSVNの独自使用かと思って試してみましたが、出来なさそうでした。

もし出来たとしても例えばaplを含めてcheckoutせずにapl/test以下だけをcheckoutしたときにaplのsvn:ignore属性が見えないので、ディレクトリ(フォルダ)個別で設定するのが無難だと思います。

id:khazad-Lefty

> svnでサブディレクトリの中までsvn:ignoreで指定できるという話は見たことがなかった

なるほど。その情報を得ただけでもありがたいです。

> ディレクトリ(フォルダ)個別で設定するのが無難だと思います。

たしかにそうかもしれませんね。別の質問で、

http://umakoya.com/blog/log/eid505.html

が紹介されてて、その「削除-ローカルファイルを保持」を使うと、少しは手間は省けそうですし。

2008/09/20 15:27:27
  • id:b-wind
    >そういえばリポジトリはV1.3のFSFSで作成してます。そのあたりも関係しているのでしょうか?
    属性自体がちゃんと設定されてれば、解釈するのはクライアントの TortoiseSVN の方なので、リボジトリ側のバージョンは関係ないはず。
  • id:ttamo
    http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html

    And it's worth noting again that, unlike the global-ignores option, the patterns found in the svn:ignore property apply only to the directory on which that property is set, and not to any of its subdirectories.
    (ふたたび注意しておきますが、global-ignores オプションとは違い、svn:ignore プロパティに設定されたパターンはそのプロパティが設定されたディレクトリ自体にしか効かず、そのサブディレクトリでは無効です)

    とのことですから、おっしゃるとおり svn:ignore は「フォルダ個別で設定する必要がある」が正解です。
    "CVS */CVS" は「共通無視リスト」(global-ignores) の話でしょう。
    なお、ディレクトリを svn:ignore で無視する場合にハマりやすい点について、以下の情報も見付けました。

    http://svn.haxx.se/users/archive-2006-03/0225.shtml

    (1) spool というディレクトリをバージョン管理下に置きつつ、その中身は無視したい場合

    svn mkdir spool
    svn propset svn:ignore '*' spool
    svn ci

    (2a) spool というディレクトリを、バージョン管理せず無視したいなら

    mkdir spool
    svn propset svn:ignore 'spool' .
    svn ci

    (2b) すでに spool というディレクトリが管理下に入ってしまっているが、管理下から外したい、しかし中身は保持したいという場合は

    svn export spool spool-tmp
    svn rm spool
    svn ci
    mv spool-tmp spool
    svn propset svn:ignore 'spool' .
    svn ci


  • id:khazad-Lefty
    とりあえず「個別設定する必要がある」で確定っぽいのでこれで終了したいと思います。
    ありがとうございました。
  • id:khazad-Lefty
    あ。それと、ttamo さん、有益な情報ありがとうございました。
    コマンドの処理も何かあれば参考にしたいと思います。
  • id:t_shiono
    global-ignoreと勘違いしておりました。
    申し訳ありません。

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません