AMG Solution

SVNでコミットを禁止したい!!フックスクリプトによるコミット拒否の方法

こんにちは。堀部です。
 
今回ご紹介するのはSVNのフックスクリプトを使用して、サーバー側でコミットを拒否する方法です。

  • あるフォルダ配下のファイルを今後一切更新させたくない。
  • 何かの拍子で更新されてしまっては困る。

そういったときに使えるTipsをご紹介します。

フックスクリプトの種類

SVNが用意しているコミット関係のフックスクリプトは以下の3種類があります。
 

スクリプト名 実行タイミング
start-commit コミットトランザクション作成前
pre-commit コミットトランザクション作成後で、コミット直前
post-commit コミット直後(コミットは完了するため拒否することはできない)

今回はあるフォルダ配下のファイルのコミットを拒否しますので pre-commit を使用します。
 
pre-commitは、コミットを拒否したい場合に、0以外の終了コードを返すことでコミットを中断させます。pre-commitが終了コード:0を返すとコミットされます。

フックスクリプトの設置

リポジトリがあるディレクトリの配下に、“hooks”というディレクトリがあります。その中にフックスクリプトのテンプレートファイルがありますのでファイル名前を変更します。
例:pre-commit.tmpl → pre-commit

フックスクリプトを編集する

pre-commit を編集して保存します。

実行属性をつける

実行権限がないと動かないので実行権限をつけておきます。

 
コミットを実行すると以下のように操作失敗となり、コミットを禁止することができます。
 
svn1

Apacheのデフォルトlocaleを変更する

エラーメッセージに日本語を使っている場合はこれをやっておかないと以下のエラーが発生します。

[Error output could not be translated from the native locale to UTF-8.]

 
最後にApacheの再起動を行います。

 
コミットを実行すると以下のように操作失敗となり、日本語のメッセージが出力されています。
 
svn2

HORIBE'S BLOG

堀部光一の記事

堀部光一の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

新卒採用
はじめました。
LOADING