外出自粛中でも楽しく過ごす!QAまとめ>>

linux(Ubuntu)でSubVersionサーバを構築したのですが、
初回コミットをしたところエラーが出てしまいました。

エラー--------
svn import /home/svn/snavi/ http://localhost:80/repos/snavi -m "test commit"
svn: PROPFIND リクエスト (相手: '/repos/snavi') が失敗しました
svn: PROPFIND (URL: '/repos/snavi'): 301 Moved Permanently (http://localhost)
--------------

この辺の記事(http://a98.jugem.jp/?eid=222)を参考に
色々試してみたのですが、解決できません。

apacheは起動しており、FireFoxからはテスト用HTML
http://localhost/repos/snavi/test.html
は参照出来ていますが、
http://localhost/repos/snavi/
へのチェックインが出来ないのです。

SVNのルート設定は以下で、

[svn設定]---
(/etc/apache2/mods-enabled/dav_svn.conf)

<Location /svn>
DAV svn
SVNParentPath /home/svn/
</Location>
-------------------------------------------

http://localhost:80/repos はSVNルートへのシンボリックリンクです。

[web(apache)設定]----------------
(ドキュメントルート)
http://localhost → /opt/lampp/htdocs

(シンボリックリンク)
$ls -la /opt/lampp/htdocs
lrwxrwxrwx 1 www-data www-data 9 2012-10-04 22:28 repos -> /home/svn

-------------------------------------------

SVNルート以下には

------------------------------------------
cd /home/svn/
svnadmin create snavi
------------------------------------------
のようにsnaviブランチを作成したのですが、
やはりhttp://localhost/repos/snavi/
へのチェックインが出来ません。

有識者の方、いらっしゃいましたらどうか
ご教授のほど宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ああ、あとubuntuのバージョンは明記したほうがよいかと。



「ubuntu svn サーバ」で検索すると
http://d.hatena.ne.jp/kslash/20071122/1195741209
とか見つかります。
# dav_svn.confの編集内容見る限り、こちらを参照されたのかも知れませんが。
# 認証用のファイル無くてもフルアクセスできる…んですねぇ……。

>Subversionを使う上で、この辺のファイルを直接いじることはまずない。
とか書かれていますが、HTTPプロトコルでリポジトリにアセスする場合(とfile://でアクセスする場合)は編集不要ですが、
svnプロトコル(ssh+svnプロトコル)でアクセスする場合は編集が必要です。


>svn: PROPFIND (URL: '/repos/snavi'): 301 Moved Permanently (http://localhost)
に関しては、掲示されたURLにあるとおりですな。
SVNリポジトリのディレクトリは、普通のHTTPリクエストでたどれる場所(今回の場合は/repos/~でアクセスできちゃう)に置いてはダメ…ということです。


http://d.hatena.ne.jp/GreenTea2010/20110520/1305 …
どっちかというとこっちの方が参考になるかと思われます。
認証用のファイルの作成についても説明されていますし。
>sudo htpasswd -c /etc/apache2/dav_svn.passwd (ユーザー名)
は最初に作成するときだけで、ユーザを追加するときは「-c」は不要ですのでご注意を。
    • good
    • 0
この回答へのお礼

毎日向き合っていたのですが、諸々煮詰まってしまい更新が遅れてすみません。
ご指摘のように、やりたい事が迷走していたので整理してみました。

やりたいこと--------
[リポジトリ]/home/svn/repos
[ブランチ ]/home/svn/repos/snavi

として、http://localhost/svn/repos/snavi
へアクセスし、snaviブランチへのコミットを行いたい。
以下補足。
[webルート]/opt/lampp/htdocs/
[webサーバ]linux XAMPPパッケージに含まれるapache
[Ubuntu]8.04
[VirtualBox]4.18
----------------------

以上を踏まえ、決定的にエラー原因を要約すると、
「svnへアクセスするプロトコルが例えhttpであっても、SVNの制約でapacheのドキュメントルート配下にSVNルートを配置する事が出来ない。したがって、apacheのドキュメントルート以外のパスにSVNルートを配置して、"WEB-DAV"でSVNルートにアクセスする必要がある」

http://d.hatena.ne.jp/kslash/20071122/1195741209 を参考に導入を行ったが、SVNを外部へ公開するためのWEBサーバがXAMPPの様に参考URLとは別の場合には、WEB-DAVの設定を当該環境用に設定する必要がある。」

が今回のエラー原因であり、無事解決する事が出来ました!

※奇しくも後者のURLは他人の投稿ですがWr5さんのレスでしたね!

>どっちかというとこっちの方が参考になるかと思われます。
>http://d.hatena.ne.jp/GreenTea2010/20110520/1305 …

こちらのレスで誤りに気付くことが出来ました。
本当にありがとうございました!

お礼日時:2012/10/10 23:17

妙な構築の仕方していますねぇ……。



>$ls -la /opt/lampp/htdocs
>lrwxrwxrwx 1 www-data www-data 9 2012-10-04 22:28 repos -> /home/svn

で、/home/svnには…
>cd /home/svn/
>svnadmin create snavi
により「snaviリポジトリ」(ブランチではありません)があるんですよね?

で、その/home/svn/snaviの中身を
>svn import /home/svn/snavi/ http://localhost:80/repos/snavi -m "test commit"
でインポートしたい。と。

/home/svn/snaviにあるのがリポジトリに入れたい中身で、
http://localhost:80/repos/snaviに……(つまり/home/svn/snaviの中に)入れたい…と。
http://localhost:80/repos/snaviに入れると/home/svn/snaviの中が更新され、更新された内容をリポジトリに入れる処理を行うと結果として/home/svn/snaviが更新され、
その変更をリポジトリに適用すると結果として/home/svn/snaviが更新され、
さらにその変更をリポジトリに適用すると結果として/home/svn/snaviが更新され、
またまたさらにその変更をリポジトリに適用すると結果として/home/svn/snaviが更新され(以下略)って循環してませんか?

と、まぁ実際にはそういう動作はしませんかね。
SVNリポジトリとして動作できるのは
><Location /svn>
>DAV svn
>SVNParentPath /home/svn/
></Location>
により、localhost/svn/~の時だけです。
localhost/repos/snaviでアクセスできるのはリポジトリの「中身の管理用ファイルとディレクトリ」であって、リポジトリではありません。
そんなワケでsvnコマンドがHTTPプロトコルを利用して発行するコマンドに応答されませんので、SVNリポジトリとしては使えません。
それが…
>svn: PROPFIND リクエスト (相手: '/repos/snavi') が失敗しました
ってエラーです。


その上で……
・リポジトリ元のディレクトリはドコに置きたいのか。
・HTTPでリポジトリにアクセスする時のURLはどういう形式にしたいのか。
を決めないとならないでしょう。

ちなみに、今の設定でもhttp://localhost/svn/snaviでアクセスできるかと思われます。
svn info http://localhost/svn/snavi
でUUIDやリビジョン(0だと思いますが)は確認できるかと。
コミットはたぶんできませんけどね。
# 認証用の情報がありませんし。

インポート元のファイルがある場所とリポジトリのあるディレクトリをごっちゃにするのもよろしくありません。
# あと…チェックアウトしたワーキングコピーとインポート元・リポジトリのディレクトリをごっちゃにしないように。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

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

QTortoiseSVNのリポジトリ更新ができない

初心者です。トータスSVN(TortoiseSVN)を利用しています。私がリポジトリを作成、ネットワーク上のファイルサーバーに配置したのですが、SVNコミットを私以外の人ができません。

他の人はリポジトリブラウザの参照はできますが、SVNコミットができません。そもそも使用の仕方が間違っているのでしょうか?

Aベストアンサー

>まさしく、その通りにリポジトリ作成しました。
>やり方がまずいんですね。。。

1.7のヘルプ、[リポジトリ][リポジトリの作成][ネットワークフォルダー上のリポジトリへのアクセス]から…
>file:// アクセスは、ローカルでの1ユーザーのみのアクセスを想定しており、そのようにテストとデバッグを行っています。リポジトリを共有したい場合は、 まさに 適切なサーバーをセットアップする必要がある場面であり、それは見かけほど難しくはありません。

理由は上記を参照して下さい。

>もし、ご存知でしたら、どこか参考になるサイトをお教え頂けると幸いに存じます。

OS不明な上、サーバでドコまでのことが出来る権限をお持ちなのか不明なのですが…。
その辺りがクリアできるとして…
「Subversion サーバ 構築」で検索するといろいろ見つかります。

自分のPC(Windows)をサーバにするなら…
・コマンドライン版Subversionをインストールしてsvnserveサーバにする。
 http://sourceforge.net/projects/win32svn/ からDL可能。
・Trac Lightningをインストールして、Trac/Aacheサーバにする。
 http://sourceforge.jp/projects/traclight/ からDL可能。
でしょうかね。
ApacheとSubversionを個別にインストールして連携させる。といのが普通でしょうが、そんなのは検索すればいくらでも事例はありますし。
# ちなみにウチのサーバ(CentOS)はApacheもTracもSubversionも入っています。
# が…リポジトリへのアクセスはSVNプロトコルでやってます。
# もちろん自分のサーバですからroot権限だってあるワケで……。

>まさしく、その通りにリポジトリ作成しました。
>やり方がまずいんですね。。。

1.7のヘルプ、[リポジトリ][リポジトリの作成][ネットワークフォルダー上のリポジトリへのアクセス]から…
>file:// アクセスは、ローカルでの1ユーザーのみのアクセスを想定しており、そのようにテストとデバッグを行っています。リポジトリを共有したい場合は、 まさに 適切なサーバーをセットアップする必要がある場面であり、それは見かけほど難しくはありません。

理由は上記を参照して下さい。

>もし、ご存知でしたら、どこ...続きを読む

Qテキストボックスの入力をリセット

ボタンが押されたら、テキストボックスの入力内容を削除するにはどうしたらいいでしょうか?

Aベストアンサー

こんな感じ。

<form>
<input type=button value="clear" onClick="this.form.t.value = ''">
<input type=text size=50 name=t>
</form>

ボタンの this.form.t の t が、テキストの名前になっていて、押されると
空の文字列を入れる、だけです。

もし、フォーム全体のテキストをクリアするならば、こんな方法もあります。

<form>
<input type=button value="clear" onClick="this.form.reset()">
<input type=text size=50 name=t1>
<input type=text size=50 name=t2>
<input type=text size=50 name=t3>
</form>

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バッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

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

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

QTortoiseSvnをバッチファイルで実行したい

ToutoiseSvnを今使い始めたばかりの初心者なのですが。

ToutoiseSvnの特定の動作をバッチファイルにしてある程度自動化したいとかんがえています。

動作としましては、
リビジョンを指定して、
そのリビジョンのログ詳細をテキスト形式で出力したい
というものです。

ちょっと自分なりにしらべたのですが。
TortoiseProc.exe /command:log /path:パス名 /outfile:出力テキスト

とかだとリビジョン番号はテキストとして出力できるのですが
肝心のログ詳細が取得できません。

手動でクリップボードにコピーしてもいいのですが、
そのログ詳細を別のところで利用しようと考えているので、
複数人で扱う場合、毎回その動作を全員に行ってもらうのも面倒ですし、
何よりもバグの原因になりやすいです。

ログ詳細を取得できるいい方法があれば教えていただきたいです。

Aベストアンサー

バッチファイルで…ということであれば、GUIのウィンドウは不要…なんですよね?

TortoiseSVNのインストール時にCUI版クライアントのインストールもできたハズですが、そちらもインストールしてあればsvnコマンドで処理できませんか?

svn log -r XXXX URL(またはパス名)
で標準出力に出力されます。
んで、リダイレクトすればファイルにも落とせるでしょう。

リビジョン指定がちょっと問題かも知れませんが。
# リポジトリツリーの状態によりますが、リビジョン番号はHEADなどが使用できる場合がありますな。

コミットされたファイル(ディレクトリ)の一覧が欲しい。ということになると、ちょっと面倒かも知れませんが。
# svn log -r XXXX -v URL(またはパス名)
# でコミット対象一覧も追加で出力はされますけどね…

ここら辺、コマンドプロンプトだとやりにくいんですよね。
Linuxとかのシェルだといろいろいぢれるんでしょうけど。
# ActivePerlとかインストールしてそっちで処理する。というのまだマシかなぁ。

バッチファイルで…ということであれば、GUIのウィンドウは不要…なんですよね?

TortoiseSVNのインストール時にCUI版クライアントのインストールもできたハズですが、そちらもインストールしてあればsvnコマンドで処理できませんか?

svn log -r XXXX URL(またはパス名)
で標準出力に出力されます。
んで、リダイレクトすればファイルにも落とせるでしょう。

リビジョン指定がちょっと問題かも知れませんが。
# リポジトリツリーの状態によりますが、リビジョン番号はHEADなどが使用できる場合がありますな。

...続きを読む


人気Q&Aランキング