現在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のレスポンスを返却す...続きを読む

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

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

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

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

Aベストアンサー

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

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

区別するなら、

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

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

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

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

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

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

Aベストアンサー

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

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

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:\

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) ||'い'

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

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

Qbatファイル処理でのテキストファイルの内容を編集

batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。

例えば
aaa=0
bbb=0
ccc=0
ddd=0

という内容のテキストファイルが存在し、batファイルにて
aaa=0
bbb=1
ccc=1
ddd=0

というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。

宜しくお願いします。

Aベストアンサー

こんな感じですか?
パスは適切に設定してください
----- a.bat -----
cd c:\foo\bar
if exist test.bak goto skip
copy test.ini test.bak
cscript a:\hogehoge\replace.vbs test.ini
:skip
----- a.bat ここまで -----

----- replace.vbs -----
Const ForReading = 1
Const ForWriting = 2

strFileName = Wscript.Arguments(0)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
objFile.Close
strText = Replace(strText, "bbb=0", "bbb=1")
strText = Replace(strText, "ccc=0", "ccc=1")

Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strText
objFile.Close
----- replace.vbs ここまで -----

参考URL:http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/feb05/hey0208.mspx

こんな感じですか?
パスは適切に設定してください
----- a.bat -----
cd c:\foo\bar
if exist test.bak goto skip
copy test.ini test.bak
cscript a:\hogehoge\replace.vbs test.ini
:skip
----- a.bat ここまで -----

----- replace.vbs -----
Const ForReading = 1
Const ForWriting = 2

strFileName = Wscript.Arguments(0)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

strText = objFile.ReadAll
obj...続きを読む


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

人気Q&Aランキング