ページ

ラベル Subversion の投稿を表示しています。 すべての投稿を表示
ラベル Subversion の投稿を表示しています。 すべての投稿を表示

2022年1月15日土曜日

Subversion にコミット済みのファイルの実行権限を変更する

Subversion からファイルをチェックアウトすると,その一部に実行権限が付与されている場合がある.

しかし,chmod コマンドでそのファイルから実行権限を削除してからコミットしても,リポジトリ上ではそのファイルから実行権限は削除されない.(そもそもパーミッションを変更しただけでは,svn 的にはファイルを変更したと認識されないため,コミットすることができない)

Subversion にコミットされているファイルの実行権限は svn:executable というプロパティで管理されているため,chmod ではなく svn propdel コマンドや svn setprop コマンドを使用して変更する必要がある.

以下に実行権限の有無の確認方法と追加・削除の方法をそれぞれ示す.

2021年2月15日月曜日

Subversionの接続先のURLを変更する

サーバーの老朽化や,VPSの引っ越し,その他設定の見直し等々,Subversion のホストが変更になることは珍しいことではない.

接続先が変更された場合,ローカルのチェックアウトを無かったことにしてしまうのも一つの手だが,コミットする前の変更ファイルを引き継ぎたい場合などは,接続先を変更すると良い.

といっても,とても簡単で,svn switch --relocate [変更前の接続先] [変更後の接続先] とするだけ.

2021年1月13日水曜日

svnsync で定期的にSubversion のバックアップを取得する

これまでSubversion については,何度か取り上げてきたが,

WM×LI: Raspberyy Pi を Subversion のリポジトリサーバにして,systemd で自動起動するように設定する.
WM×LI: 【svnadmin dump】Subversionのリポジトリを別のサーバーに移行する.
WM×LI: Subversionで直前のコミットを取り消す.

今回はsvnsync コマンドを使用して,リモートで定期的にSubversion をバックアップを取るお話.

先日,WebArena IndigoでレンタルしているVPSをアップデート(apt upgrade)していたら,途中で突然停止し,その後アクセス不可,再起動不能になり,Subversionのリポジトリデータが全部吹っ飛んだので,やり方を調べた.

2019年5月26日日曜日

Subversionで直前のコミットを取り消す.

間違えてコミットしてしまった!という状況の回復.

まずは,作業ディレクトリを最新の状況にして,リビジョンを確認する.
$ svn update
Updating '.':
At revision 354.

リビジョン354を取り消して,353に逆マージする.(ここでは,リビジョン354でコミットしたClassAというクラスの作成を取り消している.最後のドットを忘れないように注意)
$ svn merge -r 354:353 .
--- Reverse-merging r354 into '.':
D    ClassA.h
D    ClassA.cpp
--- Recording mergeinfo for reverse merge of r354 into '.':
 U   .
--- Eliding mergeinfo from '.':
 U   .

これをコミットすれば作業完了(念の為,コミットする前にビルド&動作確認とかしておくと良い.)
$ svn commit 


また,ファイル単位で元に戻したいときは,以下のようにすればファイル単位での修正も可能.
$ svn merge -r 354:353 ClassA.h 
--- Reverse-merging r354 into 'ClassA.h':
D    ClassA.h
--- Recording mergeinfo for reverse merge of r354 into 'ClassA.h':
 U   ClassA.h
--- Eliding mergeinfo from 'ClassA.h':
 U   ClassA.h

以上.

2019年2月26日火曜日

【svnadmin dump】Subversionのリポジトリを別のサーバーに移行する.

svnserveを走らせているRaspberry Piに最新版のOSを再インストールするためなので,移行というよりバックアップ/リストアの方が近いが,やることは同じなのでサーバー間の移行として備忘録に残す.今回,使用するコマンドはsvnadmin dump及びsvnadmin load.実際の手順は以下の通り.

まず,リポジトリが保存してあるサーバでリポジトリをダンプする.
$ svnadmin dump ./repos/Project > svn.dump 

これを別のサーバーにコピー.(svn.dumpの容量が大きいときは先に圧縮したほうが良いだろう.)
$ scp svn.dump <別のサーバのIP>:~/

コピー先のサーバーでも同様にディレクトリを作成.その後,リポジトリを作成する.
$ mkdir -p repos/Project
$ svnadmin create ./repos/Project

最後にコピーしたダンプファイルを取り込む.
(途中,過去のコミット履歴が表示されるので,懐かしい気持ちで取り込みが完了するのを待つ.)
$ svnadmin load ./repos/Project < svn.dump

取り込みが完了したら,問題なく完了しているか試しにチェックアウトしてみる.
$ mkdir tmp
$ svn co file://localhost/[リポジトリを作成したパス]/repos/Project ./tmp/

調べる前はもっといろいろと手順があるかと思っていたが,とても簡単だった.サーバー間の移動だけでなく,リポジトリのバックアップをcronで回してみるのも便利だと思う.

2017年6月11日日曜日

Raspberyy Pi を Subversion のリポジトリサーバにして,systemd で自動起動するように設定する.

仕事ではソースファイルの管理をちゃんとしているのに,趣味で作ったプログラムはほとんど何もしていなかったので,Raspberry Pi で svnserve を起動して管理することにした.

まずは,ラズパイ上で Subversion のパッケージをインストールする.
# apt install subversion