アレルギー対策、自宅でできる効果的な方法とは?

現在SVNのリポジトリが30Gbyteくらいもあるので、そのリポジトリないにある複数のプロジェクトとしているフォルダ毎をリポジトリとして独立させようと思っています。

まず
”/test/project/proj1”というフォルダをsvndumpfilterで切り出してみるために
この次ののコマンドを実施しました。

C:\mywork\>svnadmin dump test_works | svndumpfilter include --drop-empty-rev s --renumber-revs test/project/proj1 > proj1_source.dat



これで”test/project/proj1”プロジェクトフォルダのみのファイルをdumpすることができました。


そして”proj1_source”という空のリポジトリフォルダを作成し、

svnadmin load /proj1_source < proj1_source.dat

とやってみると、

つぎのようなエラーが出てきます。

<<< オリジナルのリビジョン 1 に基づき、新しいトランザクションを開始しました
svnadmin: E160013: ファイルが見つかりません: トランザクション 0-0, パス 'test/project/proj1'



このようなエラーが出た場合にどのように対処したら良いのか教えて頂けないでしょうか。


http://dqn.sakusakutto.jp/2012/08/svndumpfilter_ …


こちらのサイトを見てみるとincludeで切り出してリポジトリ化したいフォルダだけ取り出したとしても、履歴に関係する依存関係のフォルダも一緒に切り出してからsvnadmin loadしないとエラーとなってしまうということが書いてあるようですが、svndumpfilter時にそれらの依存関係のあるファイル群も一緒に自動的に切り出してくれるようなやり方などありませんでしょうか?


どうぞ、よろしくお願い致します。

A 回答 (2件)

同じく…試したことはない……ですね。


複数のプロジェクトを1つのリポジトリに入れることはあまりありませんし。
# SVNサーバ自体が自分の管理下なので必要になればリポジトリ新設して対応可能だし。

手元にあるリポジトリで、branchsだけ切り出す。
なんてのをやってみたら……
svndumpfilter時に
>Revision 35 skipped.
>svndumpfilter: Invalid copy source path '/trunk'
>プロセスが、存在しないパイプに書き込もうとしました。
とか言われてしまいました。
# 実際にダンプできていたのかは不明。

>svndumpfilter時にそれらの依存関係のあるファイル群も一緒に自動的に切り出してくれるようなやり方などありませんでしょうか?

includeではなく、不要なプロジェクトをexcludeで外す…という方法ではどうですかね?
複数あるならパイプで繋いで一つずつ外していけばよいかと。
# branchsやtagsの中がどうなるか…ってのはありますかねぇ。
# まずはそっちのをexcludeで外していって、最後にtrunk…かなぁ???

>現在SVNのリポジトリが30Gbyteくらいもあるので

ビルドのたびに生成される中間ファイル(オブジェクトファイルなど)はリポジトリに含めない方がいいですよ。
と忠告はしたような気がしますが……。
# ちょっと過去の質問とか検索したけど見つからん。……別の人だったかな。

SVNの関係上テキストファイルなら差分で持つけど、バイナリファイルはコミットごとにまるまる保存されていく……ハズ。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。やはりbranchとか繰り返して作業した場合には依存関係が複雑になるので、それらをチェックしながら綿密に切り出しとかやらないといけないんだなということがわかりました。

ちょっと頼まれた人からもソースコードのテキスト以外にバイナリが多すぎるとリポジトリがとても重くなるので、やめて新規のリポジトリを立ててほしいみたいな同じようなことを言われています。

私としては簡単に、短時間でリポジトリの一部切り出し移動とかができるのであれば、今までの変更履歴もshowlogで参照しやすいだろうなと思ってたのですが、ようやくあきらめられそうです。


includeよりもexcludeでちょっとずつリポジトリのダイエットを進めていったという方のサイトを見て、私はまだやっていませんが何となく理解できました。


助かります。

お礼日時:2014/04/02 13:39

エラーメッセージを含めて検索しただけで試したことはない.



参考URL:http://kgirlssworld.blogspot.jp/2012/08/svn-repo …
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。svndumpfilterの解説ページ紹介頂きありがとうございます。助かります。

お礼日時:2014/04/02 10:14

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSubversionのリポジトリの削除

Subversionを使ってみようと現在ダウンロードしていろいろ試しています。
そこで疑問なんですが、たとえばテスト用で作ったSubvewsionのリポジトリを完全に削除したい場合はどうすればいいのでしょうか?

単純にそのリポジトリ以下のファイルやディレクトリを削除するだけでいいのでしょうか?

現在、Windowsで上でリポジトリ(ローカル)を作成し、TortioseSVN経由で利用しています。
UNIX系の場合でかまわないので、情報があれば教えてほしいです。

Aベストアンサー

リポジトリごとごっそり削除したい場合は、Subversionのディレクトリ以下を全て消してしまえば良いと思います。

試しに ディレクトリをRenameしてみてはどうでしょうか?
当然ですが、アクセスできなくなると思います。。
# 何かSubversion用のデーモンを動かしている場合はちょっと注意が要るかもしれません。

私は大抵そういう場合は消してしまいますが、はたして他のディレクトリに書き込みを全くしていないかというと、確認したことはないです。
ただ、マニュアルにも
http://subversion.bluegate.org/doc/book.html#svn.reposadmin.maint.backup
「コピーすればバックアップが取れる」とあるので、その部分にしか書き込みはしていないと思われます。

Qsvnリポジトリ内の一部のフォルダのみリポジトリ化

現在、SVNでファイルの管理を行っています。1つのリポジトリに複数のプロジェクトを入れていたのですが、それぞれ進捗が激しくなってきたので、プロジェクトごとにリポジトリを作りたいと思っています。

それぞれのプロジェクトのファイル更新履歴もそのまま新しいリポジトリに引き継ぐことは可能でしょうか?

どうぞ、ご教示頂きますようお願い致します。

Aベストアンサー

>それぞれのプロジェクトのファイル更新履歴もそのまま新しいリポジトリに引き継ぐことは可能でしょうか?

プロジェクトというか…ディレクトリですよね?

以前にも説明したことがあったような気もしますが、
svnadmin dumpでダンプして、
svndumpfilterでフィルタして、
新しいリポジトリにsvnadmin loadで流し込む。
ということになるかと。
「Subversion リポジトリ 一部 抜き出し」辺りで検索してください。

SourceForge.jpだとシェル使えなかったと思われますのでそこら辺はどうなるやら……。
「SourceForge SVN ダンプ」だといくつか見つかるので、もしかしたらできるのかも知れません。
が、試したことはもちろんありませんが。

Qsvnでファイル移動すると履歴がついてこない

tortoisesvn1.8.3 build24901-64bitを使用しています。

1)作業コピーで移動したい(例えば)3つ履歴があるファイルを選んで右ドラッグ
2)同じ作業コピー内の別のディレクトリにドロップ
3)「SVN バージョン管理下の項目をここに移動」を選ぶ
4)移動した先のファイルアイコンはプラスマークが付く
5)コミット。コミットログに「ファイル移動」と記載。
6)コミット時の表示は移動したファイル削除/追加と出ている。
7)コミット後、移動したファイルを選んでログを見ると「ファイル移動」しかありません。

リポジトリのtopのログには全履歴が残っていますが
これは正常な動作をしているのでしょうか?

期待した動きとしては
移動したファイルのログを見たら、元々持っていた3つの履歴に「ファイル移動」が
追加された状態です。

Aベストアンサー

Subversionでは、移動は「コピーしてから、元を削除」となります
http://www.caldron.jp/~nabetaro/svn/svnbook-1.5-final/html-chunk/svn.ref.svn.c.move.html

よって、4),6)は正しいです。

7) については、「コピー/名前の変更が発生したら停止」にチェックが入っていませんか?
http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/tsvn-dug-showlog.html

QTortoiseSVNでリポジトリURLの指定方法

TortoiseSVNでインポートする際の、リポジトリURLの指定の仕方が分からないので質問させて頂きます。

自身で立てたサーバを使用して、現在ホームページの運用をしております。
(サーバ、ローカルPCには、すでにsvnをインストール済みです)

サーバはCentOS(i386版)を使用しており、ローカルPC(Windows VISTA)で作成したホームページ用ファイル郡をsubversionで管理したいと思い、サーバ側にリポジトリを作成して、そのリポジトリへローカルPCにあるファイル群をインポートしたいのですが、その際にどのようにURLを指定すればよいのでしょうか?

下記情報を参考にしていただき、お分かりになる方いらっしゃいましたら、ご教授の程お願い致します。

=======
・サーバ側のsvnディレクトリ
/home/develop/svn/ 以下に"test"というリポジトリを作成してあります。

・URLの指定
ローカルPCから、インポートしたいファイルを選択して、
右クリック→TortoiseSVN→インポート
で、リポジトリのURLを

http://サーバのIPアドレス/home/develop/svn/test

としたのですが、

エラー: OPTIONS (URL: 'http://サーバのIPアドレス/home/develop/svn/test'): 200 OK (http://サーバのIPアドレス)

と表示され、エラーになってしまいインポートできません。
=======

TortoiseSVNでインポートする際の、リポジトリURLの指定の仕方が分からないので質問させて頂きます。

自身で立てたサーバを使用して、現在ホームページの運用をしております。
(サーバ、ローカルPCには、すでにsvnをインストール済みです)

サーバはCentOS(i386版)を使用しており、ローカルPC(Windows VISTA)で作成したホームページ用ファイル郡をsubversionで管理したいと思い、サーバ側にリポジトリを作成して、そのリポジトリへローカルPCにあるファイル群をインポートしたいのですが、その際にどのようにUR...続きを読む

Aベストアンサー

><Location /svn>

で設定していますから、アクセスする際のURLは
http://サーバのIPアドレス/svn/test
になるハズです。
# apacheのLocationディレクティブの設定になりますので、その辺りのキーワードで検索して下さい。

いくつかのパターンで試しましたが…httpプロトコルでSubversionを使う場合、まずHTTPのOPTIONSリクエストが発行されるようです。
そこで、Subversion固有のレスポンスが返されると、処理を続けるようですが……
apacheはアクセス不能なパスを指定してもOPTIONSで200 OKのレスポンスを返却するようで。

>グループ:root
>所有者:root
>パーミッション:755

所有者はapacheに変更しておいた方がよいかと思われます。
chown -R apache.apache /home/develop/svn
と…
これでもダメでしたら
chmod 755 /home/develop
でしょうか。

>また、http://ではなくfile://でアクセスしても上手くいきませんでした。

file:///home/develop/svn/test
になりますが、この指定が可能なのはローカルマシンだけです。
svn info file:///home/develop/svn/test
で情報が出るかと。

>httpプロトコルでSubversionを使用する場合、
>svnのディレクトリを現在の
>/home/develop/svn
>から
>/var/www/svn
>と変えなくてはアクセスできない、ということなのでしょうか?

パーミッションの設定とapacheの設定が正しく行われれば、そのようなコトはない…ハズです。
# Subversion専用のユーザを作成し、そのホームディレクトリ(/home/svn など)にリポジトリを作成、
# httpでアクセス…という方法をブログなどで公開している人もいますし。

なお、/home以下の各ユーザが自分のsubversionリポジトリを作成してhttpプロトコルで利用。
の場合は、その都度apacheの設定変更が必要…のようです。
# svnプロトコルならできなくはない…と思われますが……。

><Location /svn>

で設定していますから、アクセスする際のURLは
http://サーバのIPアドレス/svn/test
になるハズです。
# apacheのLocationディレクティブの設定になりますので、その辺りのキーワードで検索して下さい。

いくつかのパターンで試しましたが…httpプロトコルでSubversionを使う場合、まずHTTPのOPTIONSリクエストが発行されるようです。
そこで、Subversion固有のレスポンスが返されると、処理を続けるようですが……
apacheはアクセス不能なパスを指定してもOPTIONSで200 OKのレスポンスを返却す...続きを読む

QSubversionで日本語ファイル名が文字化け

Subversion+TortoiceSVNでソースコードの管理を行っているのですが、
つい最近、両ソフトをバージョンアップ(svn 1.6.xx⇛1.6.16?)したときから
ファイルのロールバックが出来なくなってしまいました。

ロールバックしようとするとチェックアウト画面のリポジトリのURLで
日本語のパス&ファイル名がURLエンコードされた状態になっており、
チェックアウトできません。

解決方法はありませんでしょうか?

よろしくおねがいします。

Aベストアンサー

>しかし、リポジトリURLは未だにURLエンコード状態…。
>こちらの解決方法はご存知ありませんか?

指定し直す…くらいですかね。
httpプロトコル、svnプロトコルではURLエンコードされていてもとりあえず問題ないですから。
とはいえ、チェックアウトすると作業コピーの名前が酷いことになりました。
リポジトリURLの「...」ボタンでブラウザ起動して再指定することで直りましたが。
# file:の時のようにファイルシステムからパスを指定する必要がない(というか上位ディレクトリに戻れる階層が多くない)ので、それほど手間ではないですし。

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

QTortoiseSVNにてサーバー上の共有フォルダからチェックアウトできない

TortoiseSVN-1.6にて下記サイトを参考に、サーバー上の共有フォルダにリポジトリを作成し、
ファイルのバージョン管理を行おうとしています。
http://www.syon.co.jp/syontech/tech014.html

サーバー側の共有フォルダに対して、リポジトリの作成は成功したのですが、
参照サイト作業内容
>クライアント側:
>実際に作業を行うクライアントマシンにおいて「SVNチェックアウト」でバージョン管理を行う環境をサーバからコピーします。
>今回は作業フォルダの下にフォルダ(work)を作成し、そこで「SVNチェックアウト」を行います。

にて、リポジトリのURLを指定し実行すると、下記エラーが表示されます。

====================================================================================================================================
コマンド   file://【サーバーのIPアドレス】/test/web/共有フォルダ/develop からチェックアウト、リビジョン HEAD, 再帰的, 外部を含む
エラー    URL に対し ra_local セッションを開始できません
エラー    リポジトリ
エラー    'file://【サーバーのIPアドレス】/test/web/%E5%85%B1%E6%9C%89%E3%83%95.../develop'
エラー    を開けませんでした
終了!
=====================================================================================================================================

サイトに書かれている内容通りに作業したのですが、何が悪いのか分かりません。
解決法をご存知の方おられましたら、ご教授お願いできませんでしょうか?
よろしくお願いします。

TortoiseSVN-1.6にて下記サイトを参考に、サーバー上の共有フォルダにリポジトリを作成し、
ファイルのバージョン管理を行おうとしています。
http://www.syon.co.jp/syontech/tech014.html

サーバー側の共有フォルダに対して、リポジトリの作成は成功したのですが、
参照サイト作業内容
>クライアント側:
>実際に作業を行うクライアントマシンにおいて「SVNチェックアウト」でバージョン管理を行う環境をサーバからコピーします。
>今回は作業フォルダの下にフォルダ(work)を作成し、そこで「SVNチェッ...続きを読む

Aベストアンサー

バージョン1.6は、そのような動作をするようです。
今のところ原因は分かりませんが、以下のようにすると目的は達成できると思います。
(1)TortoiseSVN 1.5.9を使う。
もしくは
(2)共有フォルダをネットワークドライブに割り当てて、ネットワークドライブ経由でアクセスする。
↓こんな感じ
file://Z:/develop

バージョン1.6のリリースノートを見ると、BDB形式のリポジトリにfile:///でアクセスできなくしたということが書かれていますので、そのからみなのかもしれません(FSFS形式でもアクセスできなくなっているようですが)。

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\

QDOSコマンドで共有ファイルへアクセスを行う際のパスの書き方

初めまして。

本題になります・・・

DOSコマンドで共有ファイルのアクセスを行う際のパスの書き方は、
「\\サーバー名\共有フォルダ名\ファイル名」ですが、DIRなどを行うと、認証が走って、ファイルへのアクセスが出来ません・・・全てDOSコマンド(バッチ)で完結したいのですが・・・
例えば、「dir \\サーバー名\共有フォルダ名\ファイル名」とした場合に、「ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。」と表示されてしまいます。
現在行いたい処理は、他サーバーの「共有ファイルのコピー&削除」、「共有フォルダの作成」です。

【環境】
コマンド実行させるサーバー:[WIN2KSEVER(admini権限/パスワード共通)]
他サーバー:[WIN2KSERVER(admini権限/パスワード共通)]

解決する方法がありましたら、お教え下さい。
お願いします。

Aベストアンサー

実際に試してみました。

net use \\サーバー名 パスワード /user:ユーザー名
dir \\サーバー名\共有フォルダ名\ファイル名

でいけました。

Qupdate文で改行を入れる

こんにちは。
いつもお世話になっています。

update文を使用して、データに改行を入れたいのですが、どうすればよいでしょうか。

対象列のデータ型はVARCHAR2です。

例えばSQLPLUSから、
SPL>update 「テーブル名」set 「対象列」='あ改行い改行う改行'
を投入し、そのあと
select 「対象列」 from 「テーブル名」
とすると
SQL>あ
SQL>い
SQL>う
と出てくればよいんですが、
SQL>update 「テーブル名」set 「対象列」='あ\nい\nう\n'
としても
SQL>あ\nい\nう\n
と、「\n」が文字列としてでてきてしまいます。

SPL>update 「テーブル名」set 「対象列」='あ
2い
3う'
と投入すると、期待通りになるのですが、
そうではなく一行にまとめたいのですがどうすれば良いでしょうか。

Oracle9iを使用しています。
宜しくお願いいたします。

Aベストアンサー

こんにちわyukio200263さん
以下のSQL文でどうでしょうか?

UPDATE 「テーブル名」
SET 「対象列」= 'あ' || CHR(13) || CHR(10) ||'い'

ちょっと長くなってしまいますが、一行で可能です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報