svn日常管理


svnのバックアップリストアについて、とても役に立ちました.
 
svnリポジトリのバックアップ
 
  • 圧縮バックアップ
  • svnadmin dump /home/workhome/svn/repository | gzip > ~/repository-backup.gz   
  • #非圧縮バックアップ
  • svnadmin dump /home/workhome/svn/repository > ~/repository-backup.svn  
  • # 
    svnadmin dump /home/workhome/svn/repository | gzip > ~/repository-backup.gz
    # 
    svnadmin dump /home/workhome/svn/repository > ~/repository-backup.svn

    svnリポジトリのリカバリ
     
  • #新しいsvnリポジトリ
  • を構築
  • svnadmin create /home/workhome/svn/newrepository   
  • #成功確認
  • ls -l /home/workhome/svn/newrepository   
  • #リポジトリデータのインポート
  • svnadmin load /home/workhome/svn/newrepository < ~/repository-backup.svn  
  • # svn 
    svnadmin create /home/workhome/svn/newrepository
    # 
    ls -l /home/workhome/svn/newrepository
    # 
    svnadmin load /home/workhome/svn/newrepository < ~/repository-backup.svn

    その他のsvnネーミング
    svnadmin recover–バージョン・ライブラリ・データベースを安定した状態に復元
     
  • svnadmin recover /home/workhome/svn/newrepository  
  • svnadmin recover /home/workhome/svn/newrepository

    リポジトリから不要なログファイルを削除
     
  • svnadmin list-unused-dblogs /home/workhome/svn/newrepository/ | xargs rm -vf  
  • svnadmin list-unused-dblogs /home/workhome/svn/newrepository/ | xargs rm -vf

    リポジトリ内の残りの共有メモリファイルをすべて削除
     
  • rm -f /home/workhome/svn/newrepository/db/_db.0*  
  • rm -f /home/workhome/svn/newrepository/db/_db.0*

    svnsyncの実装
    svnsyncを実装する唯一の前提条件は、ミラーリングしたいバージョンライブラリを作成することです.作成すると、次の手順に従います.
    Step 1:ミラーRepositoryを作成する(マスターRepositoryの名前と同じにする)
     
  • svnadmin create MIRROR_REPO_PATH  
  • svnadmin create MIRROR_REPO_PATH

    Step 2:ミラーバージョンライブラリの設定同期ユーザのみ書き込み可能
     
  • svnsync synchronize -h   
  • synchronize (sync): usage: svnsync synchronize DEST_URL   
  •   
  • Transfer all pending revisions to the destination from the source   
  • with which it was initialized.   
  •   
  • Valid options:   
  •   --non-interactive        : do no interactive prompting   
  •   --no-auth-cache          : do not cache authentication tokens   
  •   --username ARG           : specify a username ARG (deprecated;   
  •                              see --source-username and --sync-username)   
  •   --password ARG           : specify a password ARG (deprecated;   
  •                              see --source-password and --sync-password)   
  •   --source-username ARG    : connect to source repository with username ARG   
  •   --source-password ARG    : connect to source repository with password ARG   
  •   --sync-username ARG      : connect to sync repository with username ARG   
  •   --sync-password ARG      : connect to sync repository with password ARG   
  •   --config-dir ARG         : read user configuration files from directory ARG   
  •   -q [--quiet]             : print as little as possible  
  • svnsync synchronize -h
    synchronize (sync): usage: svnsync synchronize DEST_URL
    Transfer all pending revisions to the destination from the source
    with which it was initialized.
    Valid options:
      --non-interactive        : do no interactive prompting
      --no-auth-cache          : do not cache authentication tokens
      --username ARG           : specify a username ARG (deprecated;
                                 see --source-username and --sync-username)
      --password ARG           : specify a password ARG (deprecated;
                                 see --source-password and --sync-password)
      --source-username ARG    : connect to source repository with username ARG
      --source-password ARG    : connect to source repository with password ARG
      --sync-username ARG      : connect to sync repository with username ARG
      --sync-password ARG      : connect to sync repository with password ARG
      --config-dir ARG         : read user configuration files from directory ARG
      -q [--quiet]             : print as little as possible

      --username ARG           : specify a username ARG (deprecated;
                                 see --source-username and --sync-username)
      --password ARG           : specify a password ARG (deprecated;
                                 see --source-password and --sync-password)
    この意味は,同期ユーザがプライマリRepositoryとミラーRepositoryを同じにすることができるかどうかである.実践を待つ.
    ミラー・バージョン・ライブラリが同期ユーザーのみによって書かれるように、私たちの例ではユーザー名は「svnsync」です.Subversionのライセンス機能を使用してデフォルトのアクセス・ルールを設定するオプションがあります.
     
  • [/]   
  • * = r   
  • svnsync = rw  
  • [/]
    * = r
    svnsync = rw
    

    もう1つのオプションはstart-commit(MIRROR_REPO_PATH/hooksの下)を使用してsvnsyncユーザーをチェックすることです.次の例はshellスクリプトです.
     
  • #!/bin/sh   
  • USER=”$2″    
  • if [ “$USER” = “svnsync” ];   
  •    then exit 0  
  • fi    
  • echo “Only the syncuser user may commit new revisions as this is a read-only, mirror repository.” >&2  
  • exit 1  
  • #!/bin/sh
    USER=”$2″ 
    if [ “$USER” = “svnsync” ];
       then exit 0
    fi 
    echo “Only the syncuser user may commit new revisions as this is a read-only, mirror repository.” >&2
    exit 1

    Step 3:同期ユーザによるリビジョン属性の変更をミラーバージョンライブラリに実行させる
    そのためには、次の例と同様にshellスクリプトであるpre-revprop-change(MIRROR_REPO_PATH/hooksの下)フックを作成する必要があります.
     
  • #!/bin/sh    
  • USER=”$3″    
  • if [ “$USER” = “svnsync” ];   
  •    then exit 0;   
  • fi    
  • echo “Only the syncuser user may change revision properties as this is a read-only, mirror repository.”  >&2  
  • exit 1  
  • #!/bin/sh 
    USER=”$3″ 
    if [ “$USER” = “svnsync” ];
       then exit 0;
    fi 
    echo “Only the syncuser user may change revision properties as this is a read-only, mirror repository.”  >&2
    exit 1

    Step 4:同期したミラーバージョンライブラリを登録する
    次のsvnsyncコマンドは、任意のプラットフォームで使用します.
     
  • svnsync initialize URL_TO_MIRROR_REPO URL_TO_MASTER_REPO --username=svnsync --password=svnsyncpassword  
  • svnsync initialize URL_TO_MIRROR_REPO URL_TO_MASTER_REPO --username=svnsync --password=svnsyncpassword

    すべての構成が正しい場合は、次の出力が表示されます.
    Copied properties for revision 0.
    ミラー・バージョン・ライブラリとプライマリ・バージョン・ライブラリの同期を登録しました.ミラー・バージョン・ライブラリがプライマリ・バージョン・ライブラリと同じになるように、初期の同期を続行する必要があります.
    Step 5:初期同期の実行
    すべての準備ができていることを確認し、初期同期を実行するには、どのシステムでも実行する必要があります.
     
  • svnsync synchronize URL_TO_MIRROR_REPO --username=svnsync --password=svnsyncpassword  
  • svnsync synchronize URL_TO_MIRROR_REPO --username=svnsync --password=svnsyncpassword

    すべての同期が正しい場合、似たような出力が表示されます.
    Committed revision 1.
    Copied properties for revision 1.
    Committed revision 2.
    Copied properties for revision 2.
    Committed revision 3.
    Copied properties for revision 3.…
    Step 6:post-commit(MASTER_REPO_PATH/hooks下)フックで自動同期する
    初期同期の出力に基づいて、私たちが今しなければならないのは、ミラーバージョンライブラリを同期するためにタイミング実行またはpost-commitフックを書くことです.post-commitをお勧めします.これは、ミラーバージョンライブラリをできるだけ最新にするためです.次は、プライマリバージョンライブラリでミラーバージョンライブラリを同期できるpost-commitフック、shellスクリプトです.
     
  • # Example for synchronizing one repository from the post-commit hook   
  • #!/bin/sh   
  •   
  • svnsync synchronize URL_TO_MIRROR_REPO -username=svnsync -password=svnsyncpassword &    
  •   
  • exit 0  

  • 注意:上記フックスクリプトはchmod 755で実行可能にする必要があります.
     
     
    原文住所:http://saplingidea.javaeye.com/blog/482924