subversion バージョン管理【サブバージョン】
■ このスレッドは過去ログ倉庫に格納されています
バージョン管理システム subversionについて語ろう。
バージョン管理システムの一つにCVSがあるが、ディレクトリの移動の管理や
ネットワーク対応などでやや難がある。
これらCVSの問題点を解決すべく開発されているのがSubversionである。
オープンソースソフトウェアの開発においてはCVSが多く使われているが、
Subversionを利用するオープンソースプロジェクトも急速に増えている。 >>114
ほんとに直近のものしか必要ないなら、exportして新しいリポジトリにimportしたら? 新しいリビジョンのみdumpした場合branchやtagのデータも含まれるからかサイズは膨張するのがちょっと不満 svndumpfilterでいらない子は捨てられるんじゃないの?
差分のエクスポートをしようと思い、ログを表示し、リビジョンを比較をクリックしたら、
server does not support retrieving information about the repository root
というエラーが出て、差分のエクスポートができません
これはどういったエラーでどのように治せばよいかご教授ください
使用ソフトは、TortoiseSVN Subversion クライアント for Windows Version 1.4.8です
>>101
ローカルへのコピー時ってXPにDAVからのダウンロードファイルサイズ制限なんてものがあるらしいね
レジストリで変更可能
関係ないか エラーが出るパターンがわかりました
他の人がインポートしたプロジェクトはリビジョンを比較できますが、
自分がインポートしたプロジェクトはエラーが出て見れません Apache + DAV のAutoversioning環境で、pre-commit でエラーを返しても
PUTに201を返してしまって、ユーザに成功したかのように見えてしまうんですが
INTERNALSERVERERRORなどを返すのが正しいと思うけど
そんな設定が見あたらなくてこまってます
誰か知りませんか? svk mirrorでうっかりsvnリポジトリのパスをtypoしちまったのだが、これ直すのどうすればいい?
svk mirror //hoge http://repos.example.net/repos/typo
とかしてしまって、
svk sync //hoge
したら
HTTP Path Not Found: 〜
といわれる状態です。//hogeにhttp://repos.example.net/repos/hogeを
対応させたいです。 DAVアクセスで、Windows Explorer にエラーメッセージを渡す方法しりませんか?
linux上でsvn co http://*********を実行すると
下記のエラーがおきます。何ででしょうか。
svn: svndiff データの解凍に失敗しました
check in するとき、ステータスがAまたはMのものをすべてまとめてコミット〜みたいなことがしたいんですが、そういうことができるコマンドオプションってありませんでしょうか??
ご教示をばいただきたく>< >>129
フォルダをコミットすればいいんじゃないか >>139,140
それじゃAやMじゃないものも混じってしまうな。
さらにコンフリクトがあるとコミット自体出来ない。 ふつーにgrepで絞ってしまうなぁ。
svn add `svn status | grep '^?' | grep -v '~$'`
ぐらい普通に打っちゃう。
>132
A や M だけ commit したい理由って何?
どーせ設定するときに >133 みたいにする必要があるけど changelist を使うと多少見通しが良くなるかもね。 (´・ω・`) しらんがな
129のお題に完全な回答になっていない可能性を示唆しただけやし
129がそんな変則的な事をしたいのかも分からんし psvn.el 系なら *A とか *M でできるけどなぁ
レスありがとうございます。お礼遅れてすいません。
こういうことやりたい理由は3、4個のファイルを編集してコミットしたいとき、全部打ち込むのが面倒だからです。
>>133
`svn status | grep '^?' | grep -v '~$'`
これだと、出力結果が
? a.txt
? b.txt
みたいになって、svnに渡すとエラーが出ませんか?? >137
cut か awk か sed あたりが必要だね。 あーごめんごめん。awk '{print $2;}' をつけてる。
試さずに書くもんじゃないね‥‥‥。
リポジトリの名前を変更する事はどうやったらできるんでしょうか
リポジトリに名前ってあった?
リポジトリurlをエイリアスできる機能があったらほしいけど 名前はあるけど、FSFS なら普通にサーバー側でリポジトリの
フォルダをリネームするだけじゃないの? リポジトリディレクトリにシンボリックリンクを張ればいいと思う
>>142
多分BDBでもそれでうまくいく リポジトリからチェックアウトしてコピーファイル置くローカルの作業フォルダだけを
削除したい場合はどうすればよいのでしょうか?
リポジトリにある大元のデータも消したい場合は右クリックのsvnのコマンドから削除
すればよい、というのは分かったのですが、ローカルの作業フォルダだけを消す方法は
分かりませんでした。 >>144
普通にOSコマンドで削除すればいいだけだと思うが。 Subversion 1.5.6 って,どんなバージョンアップですか。
教えて英語得意な人。 Visualsvnに関する質問はスレチでしょうか? > TortoiseSVN 1.6.2, built against Subversion 1.6.2. Released 9. May 2009.
なのに
> The latest release of Subversion is 1.6.1.
珍しいこった EclipseのプラグインはSubversiveでいいの? >>156
Subclipseもあるよ。好みの方を使えばよい。
MacOSX上ではGUIでまともに使えないのか。
CUIにがて。 >>158
開発環境ならXcode、Eclipse
単体ソフトならVersions、Cornerstone
Finder拡張ならSCPlugin
Path Finderも対応してる。
Cent OS 5に、Subversion 1.6.5をインストールしたのですが、
Apacheのmod_dav_svn.soの読み込みが、下のエラーで成功しません。
どなたか解決方法ご存知の方よろしくお願いします。
apachectl: Configuration syntax error, will not run "restart":
httpd: Syntax error on line 206 of /etc/httpd/conf/httpd.conf: Cannot load /usr/lib/httpd/modules/mod_dav_svn.so into server: /usr/lib/httpd/modules/mod_dav_svn.so: undefined symbol: svn_log__update
Syntax Errorってんだから該当箇所(206行め)を提示するのが筋。
>>160
「mod_dav_svn.soのモジュールのロード時に、svn_log_updateってシンボル (=エントリポイント) が無い」ってエラーが出てるね。
どうやってインストールしたの? CentOS 5.xにはSubversion 1.6.xは用意されていないだろうから、
DAG Repository使ったの? それとも自前でビルドした? 他のOSのRPMを無理矢理入れた? >>161
206: LoadModule dav_svn_module /usr/lib/httpd/modules/mod_dav_svn.so
207: LoadModule authz_svn_module /usr/lib/httpd/modules/mod_authz_svn.so
です。
>>162
自前ビルドです。
./configure --with-apr-util=/usr/local/apr-util/ --with-apr=/usr/local/apr/
make
make install
でインストールしました。 >>163
Apache httpdを自前で入れた
→httpdとSubversionの全てを知るくらいがんがれ。
Apache httpdはCentOSのを使ってる
→(1)開発パッケージ(*-dev)やconfigureのオプションが足りないのでは。がんがれ。
→(2)あきらめてDAG (rpmforge) のmod_dav_svn-1.6.5-0.1いれたら? >>163
ldd /usr/lib/httpd/modules/mod_dav_svn.so
Subversionスレの話題から離れてきたな >>164-165
rpmforgeからインストール後、httpd.confに
LoadFile /usr/local/apr-util/lib/libaprutil-1.so
LoadFile /usr/local/apr/lib/libapr-1.so
を追加することで成功しました。ありがとうございます。 誤ってリポジトリを消してしまったんだがどうすればいい? 権限そのままでupdateする方法ないですか?
test.txtのグループがtest ユーザーがuserで、
rootでupdateかけたらユーザーもグループもrootになってしまうのですが、
ユーザーとグループはそのままにしておきたいのです リポジトリに入れた時点でそういうメタ属性はなくなるので無理。
OSに付いてるアーカイブツールやバックアップツール(tarやdump等)を検討ください。 >169
使った事無いけど、contrib にある asvn が使えるかも。 subversionでコミット/チェックアウトする際にあるフォルダやそのサブフォルダを更新の対象から外すことは可能でしょうか。
TortoiseSVNというのをインストールせずに、コマンドで出来ることがあれば教えて頂けないでしょうか。宜しくお願いします。
-N [--non-recursive] : 廃止予定です。--depth=files または
--depth=immediates を使用してください
--depth <ARG> : 操作の対象を深さ <ARG> ('empty'、'files'、
'immediates'、'infinity' のいずれか) に限定しま
す
svn commit helpですぐ出てきたよ
訂正
×svn commit help
○svn help commit >>172
subversionのコマンドはWindowsにはついてこないので、別途入れる必要がある。
次のWebサイトからWindows 向けバイナリを取得できる。
WindowsならCollabNet Subversion Command-Line Client v1.6.5 (for Windows) を
インストールし、あとは >>173 のとおり。
ttp://subversion.tigris.org/ チェックアウト中に画像の多く含まれるフォルダで止まってしまうんですが、
単体ファイルのサイズが大きいとそういう事あるのでしょうか。 ttp://terai.xrea.jp/Subversion/WinMerge.html
このページを参考にWinMergeをSubversionのdiffとして使用する設定を行ったのですが
svn diff test.txt
はうまくいきますが
svn diff -r 100 test.txt
はWinMergeのファイル指定のダイアログが表示されうまくいきません。
どうもリビジョン100のファイルが取得できないようです。
どなたか原因がわかる方いらっしゃいませんか?
182です。
すみません、ここはLinux板でした。
移動します。 post-commitでupdateかかったパスを取得できないでしょうか。
そのパス以下のみsvn ?upしたいのですが。
全体やるとえらい時間かかるので・・。 svnで、現在のリビジョン番号を取得する方法はないでしょうか。
svn info -r base
で表示されるリビジョン番号を取得して、それを引数にプログラムを起動したいのです。 >184
svnlook changed 使えば?
>185
その svn info -r base の出力結果を解釈するんじゃ駄目なのか? subversionが作成する管理フォルダ .svn 以下全てのパーミッションを
drwxrwxrwxにしたいのですが、どうすれば可能でしょうか。
プロジェクトのルートで
$ find . -name .svn -type d -exec chmod -v 777 '{}' +
Linuxなら使えると思うけど、もし最後の + が使えなかったら
$ find . -name .svn -type d -print | xargs chmod -v 777
あ、「以下すべて」か。chmod に -R オプションも付けて。
phpでフォルダ作成のプログラムを使用しているのですが、
所有者とグループがapacheになってしまいます。
svn add ./****** したときに作成される.svnのパーミッションが
777にはならないでしょうか。 svn addしたときにumask 000 すればいいのでしょうか。
それともmkdirしたとき?
すいません。
ここの住人でリポジトリが巨大になってチェックアウトや更新が
途中で失敗する症状になった方はおられませんか?
今、リポジトリが20Gバイトくらいでチェックアウトした
ワーキングコピーは40G、ファイル数が3万程度です。
checkout中topで眺めていると、apacheがメモリとスワップ領域を食いつぶしたところで
停止しているようです。
更新を繰り返せばいいのですが、なんだかスッキリしません。
サーバーはubuntu server9.10,memory2GByte,apache2、subversion1.6です。
apacheがメモリにキャッシュ?してるかな? 64bitと32bitで試しましたが変化なし。
おっきいバイナリをsubversionで扱うのは良くないのか。
鯖側はわからないけれど、
クライアントが Windows の亀の場合、
checkout したり update したりすると、
タイムアウトで切れることはあるかな。
ワーキングコピーは 20G くらい。
失礼、お知恵をお貸しください。
webdav経由でアクセスさせる時の認証の設定をすると403が出るようになりました。
http://g-chan.dip.jp/square/archives/2008/02/subversionwebdav.html
http://ryus.co.jp/modules/wordpress/index.php?p=278
は探し出せましたが、どうもこの問題とは違うようです。
※前者はちゃんとディレクトリを指定しても403がでました
後者はブラウザでのアクセスでもダメだったので問題が違うようです。
apacheのerror_logにも「Access denied」以外のログは特に残っていないようです。
また、認証関係の設定を削るとアクセスできるので、subversionそのものは動いているようです。
以上、お心当たりがありましたらご指摘ください。
必要なら設定を晒しますので、「ここ見せろ」と言ってもらえれば幸いです。よろしくお願いします。 失礼、解決しました。
問題はAuthzSVNAccessFileの内容だったようです。
/etc/httpd/conf.d/subversion.confではSVNPathとせずSVNParentPathでリポジトリの親ディレクトリを指定していたのですが、
その場合はAuthzSVNAccessFileで指定するファイルでは、配下にあるリポジトリの名前を明示的に指定してアクセス権限を指定してやらないといけないのですね。
リポジトリ直下においたファイルをAuthzSVNAccessFileで指定した場合、特にリポジトリを指定しなくても権限が制御できていたので勘違いしていました。申し訳ありません。
以上、ご報告まで。お騒がせして申し訳ありませんでした。 巨大なリポジトリ(repo)があります。
その配下にAAA,BBB,CCC,DDD・・・などフォルダが4,000ぐらいあります。
今まではrepoを全てcheckoutして作業していたのですが、
checkoutにかなり時間を要するので、BBBとDDDセットでcheckoutなど
を考えています。
しかし、個別のフォルダをcheckoutすると、コミット時にフォルダごと
個別にしなければいけません。
かなり手間なのでいい方法はありませんでしょうか。
/repo
L AAA
L BBB
L CCC
L DDD
・
・
・ svn commit /repo/{BBB,DDD} のどこが不服なのか。 >202
そのようなやり方があったのですね。
知りませんでした。参考になります。
repoが大きくなりすぎたので、別のリポジトリを作成し分割も考えています。
その場合は>>201さんが言っている、外部参照をしたいと思うのですが、
分割した場合はパスがずれてしまいます。(webシステムと連動しているので
ややこしい)
4000フォルダをオーバーしても運用上問題なければ分割しなくてもいいのかと
なかなか判断が出来ません。
リポジトリのサーバはlinuxで、クライアントはwindowsです。
ウィンドウズはフォルダが多すぎると開くのに時間がかかってしまいます。
運用のアドバイスをいただければ幸甚です。
>>200
sparse checkout subversion とか、sparse directories subversion とかでググれば
幸せになれると思うよ。 >>202
試さずに聞くけど、Windowsのコマンドプロンプトでも使える?
cmd.exeの場合は
svn commit "C:\Documents and Settings\repos\BBB" "C:\Documents and Settings\repos\DDD"
みたいに、人間が自分で展開して並べてやる必要がある。
...けど、できる。 ubuntu サーバ(ubuと呼ぶ)上で subversion のリポジトリを作成し、Windows のファイルサーバ(winと呼ぶ)にバックアップを取ろうとしています。
バックアップの手段としては svnsync を使おうとしています(post-commitで、win 上のリポジトリと同期させたい)。
そのため、win の共有フォルダにバックアップ用のリポジトリを作成しようと、ubu から win の共有フォルダをマウントしましたが、
マウントしたディレクトリ内で svnadmin create をすると「svnadmin: database is locked」というエラーが
出てしまい、リポジトリが作成できません。
ubu 上では apache から DAV でリポジトリにアクセスさせるために、ubu 上のリポジトリには www-data:www-data に
所有権を与え、さらに、win をマウントする時にも uid,gid を www-data の id を指定しています。
windows の共有フォルダをマウントして、その上にリポジトリを作成することはできないのでしょうか?
それとも、何かしらの設定によるものなのでしょうか?
板違い、スレ違い等ありましたら誘導していただければ助かります。
よろしくお願いします。 >>209 自己解決しました
--pre-1.5-compatible オプションを付けてリポジトリを作成したら
うまくいきました。 fsfs-reshard.py
でリポジトリDBバージョンを2->3にしたらチェックアウト、更新はできるけど
コミットできなくなった。バージョンは1.6.9です。
横着しないほうがいいってことらしい。 >>209
私もsentOSからwindowsの共有フォルダをマウントして、
sentOS上のリポジトリのバックアップをwindows側に取ろうとしているんですが、
上手くいかず困っています。
【状況】
1.sentOSからwindow共有フォルダをマウント
2.SentOSから"svnadmin create hogehoge"を実行し、windows上にミラー用リポジトリ作成
3.ミラーリポジトリのhooks/pre-revprop-change の内容を以下に変更
#!/bin/sh
exit 0
4. 3のファイルに実行権限を付与
5. SentOSから "svnsync init file///ミラー先 file:///ミラー元" を実行してリポジトリの
初期化を試みるが失敗。以下のようなエラーが出た。
"svnsync: 'pre-revprop-change' フックが次のようなエラーを出力して失敗しました:"
(↑※「次のようなエラー」と出力されているにもかかわらず、エラー内容が出力されていない)
以上です。解決法をご存知の方がいらっしゃれば、アドバイスお願い致します。
http://hibari.2ch.net/test/read.cgi/tech/1283780922/から誘導されてきました。
イントラ内に建てたfreebsd8.1サーバーにsubversionインストールして
ブラウザでhttp://サーバーアドレス/davってするとdav - Revision 0: / って表示されるところまでできました。
やりたいことは、クライアントのWin7上で開発中のvisual studio 2010 proのVC#プロジェクトを管理したいのですが
サーバーに同期(アップロード?コミット?チェックアウト?)させる方法がわかりません。
つまり、コミット先?をhttp://サーバーアドレス/davにしたいのですが
設定がまずいのか現在は、ローカルの
file:///C:/Repositories/dav/trunkになってしまいます。
どうしたら変更できますか? チュートリアルやった方が良いんじゃないか?
svn importとかしらべてみな。
その段階では、サーバの問題じゃないから
http://hibari.2ch.net/test/read.cgi/tech/1286654542/
で聞いた方が良いんじゃないか? ■ このスレッドは過去ログ倉庫に格納されています