Home > 開発環境 > バージョン管理

バージョン管理 Archive

(仮)githubを使って開発する このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

サーバの設定ファイルをsubversionで管理してみる このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

サーバを管理する上で、各種の設定ファイルを管理したくなり、簡単にshellを書いてみました。
スクリプトはとても単純で、自分で用意したsvnレポジトリに指定したファイル/ディレクトリをコミットする、というだけです。

色々やり方はありそうですが、

  • 現時点では大量のサーバを管理するわけではなく、あくまで数台レベルでOK
  • 自分で分かる技術の方がやりやすい

ということで、自分のsubversionレポジトリに適当にコミットして管理することにしました。

  • ローカルにチェックアウトされたsvnレポジトリがあることが前提です。
  • そのsvnレポジトリに対して、ファイルシステムのパス(/etc/httpd/など)を保ったまま、コミットします
  • ディレクトリごとコミットもできるが、不要なディレクトリの削除はしない(不要なファイルの削除はできる)
  • コミットの逆、古いバージョンから戻すコマンドは現時点ではない。実際問題として、戻すようなことは殆ど発生していないため。戻す場合は手動で戻します。
  • 何かあったら、svnコマンド直叩きで解決。

使い方

パスの通った箇所に次のファイルを保存して置きます。
また管理するファイル群はroot(sudo)で扱うことが多いので、
実行の際にはsudo addscmしてます。


 $ sudo addscm /etc/httpd/conf/httpd.conf  ## httpd.confをバージョン管理する場合
 $ sudo addscm /etc/httpd/conf.d/          ## conf.dディレクトリ全体をバージョン管理する場合

スクリプトの以下の箇所は環境に合わせて修正下さい。
MAX_SIZEMAX_COUNTはどちらもディレクトリ全体をバージョン管理する場合のファイル数/ファイルサイズ(KB)の制限値です。
間違ってaddscm /としたときなどに困らないように、この設定を入れています。

REP_DIRはチェックアウトしたローカルのパスです。
複数のサーバの設定ファイルを管理する場合には、server01のところを適当なサーバ名(hostname)で置き換えています。

# edit setting
MAX_SIZE=10000   # ディレクトリをバージョン管理する場合の、指定ディレクトリのサイズ制限値(KB)。これを超えると、addscmできない。
MAX_COUNT=100    # ディレクトリをバージョン管理する場合の、指定ディレクトリのファイル数制限値)。これを超えると、addscmできない。
REP_DIR=/home/kuboma/repos/trunk/server/server01/ROOT  # レポジトリのコミットパス。予めこのパスにsvn checkoutしておいてください。

コード

見て分かる通り厳密なエラー処理はしてませんし、無茶なコードもあります(svn deleteしてるところとか)ので、くれぐれもご注意を!

またコード上一箇所 rm -iしている箇所があります。
これはディレクトリ単位のバージョン管理の場合に、削除済みファイルを一旦全てローカルの作業コピーから削除するためのものです。
問題なさそうならrm -irm -fに変更することをおすすめします。

#/bin/sh
# addscm
#
# TODO: wildcard
#

# $1: source files

# edit setting
MAX_SIZE=10000
MAX_COUNT=100
REP_DIR=/home/kuboma/repos/trunk/server/server01/ROOT

# check REP_DIR
if [ "x${REP_DIR}" = "x" ]; then
   echo "REP_DIR is not set. Please set REP_DIR."
   exit
fi

# don't edit
ABS_PATH=$(cd $(dirname "$1") && pwd)/$(basename "$1")

if [ -f $ABS_PATH ]; then
    # target is file
    echo "FILE PATH: ${ABS_PATH}"
elif [ -d $ABS_PATH ]; then
    # target is dir(ex: /usr/local/bin )
    echo "DIR PATH: ${ABS_PATH}"
    DIR_SIZE=`du -sbk ${ABS_PATH} | cut -f 1`
    FILE_COUNT=`find ${ABS_PATH} | wc -l`

    # dir size check
    if [ ${MAX_SIZE} -lt ${DIR_SIZE} ]; then
        echo "DIR_SIZE  : ${DIR_SIZE}(KB), over MAX_SIZE(${MAX_SIZE})"
        exit;
    else
        echo "DIR_SIZE  : ${DIR_SIZE}(KB)... OK"
    fi

    # file count check
    if [ ${MAX_COUNT} -lt ${FILE_COUNT} ]; then
        echo "FILE_COUNT: ${FILE_COUNT}(Files), over MAX_COUNT(${MAX_COUNT})"
        exit;
    else
        echo "FILE_COUNT: ${FILE_COUNT}(Files).. OK"
    fi 

else
    # target is not dir, file
    echo "Sorry, target is file or dir only."
    exit
fi

FILES=`basename "${ABS_PATH}"`
DIR=`dirname ${ABS_PATH}`

COMMIT_DIR=${REP_DIR}${DIR}
echo "mkdir -p ${COMMIT_DIR}"
mkdir -p ${COMMIT_DIR}

# files in repos deleted
if [ -d $ABS_PATH ]; then
    echo "rm -i ${COMMIT_DIR}/${FILES}/*"
    rm -i ${COMMIT_DIR}/${FILES}/*
fi

echo "cp -pi ${ABS_PATH} ${COMMIT_DIR}"
cp -r ${ABS_PATH} ${COMMIT_DIR}

cd ${REP_DIR}
svn add * --force
svn commit -m "committed by addscm command"

# files in repos deleted
if [ -d $ABS_PATH ]; then
    cd ${REP_DIR}
    for i in `svn status`; do
        if [ "x!" != "x${i}" ]; then
            # deleted file
            svn delete ${i}
        fi
    done
fi

cd ${REP_DIR}
svn commit -m "delete committed by addscm command"

echo "success addscm."

関連URL

ページャに lv を使用すると”git log”や”git diff”で表示されるテキストに変な文字列が挿入されてしまう このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

最近Ubuntuを使い始めることにしました。
GUI環境でLinuxを使うのは初めてで、今回のお題であるgitも使うのは初めてです。

今回は、git環境を整えるために色々触ってみた際に遭遇した不具合の対処方法を書きます。

今回遭遇した不具合というのは、

“git log”や”git diff”で表示されるテキストに文字化けしたような変な文字列が挿入されてしまう

というものです。

具体的には、Ubuntuにgitを入れて使ってみると、Ubuntuの初期状態には問題無かったのですが、多国語化ファイルビューア(ページャ)であるlvをインストールしてみた途端に、”git log”や”git diff”などのコマンド実行時に“^[[“という文字列が行頭などに大量に挿入されて視認性が著しく悪くなるという不具合です。

この不具合の原因と解決方法は以下のようになっています。

全文を読む

さくらインターネットで、Subversion運用と、Eclipse+Subversiveでのsvn+ssh接続と、RedmineとSubversion連携を行う このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

こんにちは。kubomaです。

今日はさくらインターネットでのSubversion運用と、そのSubversionに対するEclipse+Subversiveからの鍵交換方式SSHの接続設定(svn+ssh)をするまでの設定について記載します。
またRedmineとSubversionの連携についても記載します。

ここではRedmineは別サーバで稼働するケースを想定しています。
# 実際さくらインターネット上でのRedmine稼働は可能ですが、かなり遅くて実用には向かないと思いました。

今回のゴール

  1. さくらインターネットのサーバとPoderosaを用いて鍵交換方式のSSH接続を行う
  2. さくらインターネットのサーバでSubversionを稼働させる
  3. さくらインターネットのサーバ上のSubversionに、クライアント側(Windows)のEclipse+Subversiveから接続、使用できるようにする
  4. 別サーバのRedmineとさくらインターネットのサーバ上のSubversionを連携させる

サーバはさくらインターネットのレンタルサーバ、クライアントは自宅のWindows XPです。
またRedmineが別サーバのCentOS上にインストール済みです。
Redmineのインストールから稼働までについては、当ブログの以前の記事サクッとCentOS 5.3にRedmine + Passenger環境をインストールを参考にしてください。

全文を読む

ホーム > 開発環境 > バージョン管理

固定ページ
アーカイブ
商品を検索

Return to page top