My Reserches / subversion


My Reserches

INDEX

サーバーサイド

パッケージ

  • よくわからんが、以下をインストールした
    • subversion
    • libapache2-svn

コマンド

レポジトリの作成

$ svnadmin create /home/kento/svn-repo

import

$ mkdir -p /home/kento/svn-repo/sesami/trunk
$ svn import -m "comment" <path to import file> file:///home/kento/svn-repo/sesami/trunk

Export

  • subversionのデーモンを動かしレポジトリをexportする
    $ svnserve --daemon --root /home/kento/svn-repo

クライアントサイド

コマンド

レポジトリの作成

  • レポジトリを作成する
    $ svn create /home/kento/svn-repo

import

  • レポジトリに実際のファイルを格納する
    $ mkdir -p /home/kento/svn-repo/sesami/trunk
    $ svn import -m "comment" . file:///home/kento/svn-repo/sesami/trunk

check out

  • ファイルを作業コピーを作成する
    • -r <リビジョン番号 or 日時>:以前のバージョンをチェックアウトする
      $ svn co file:///home/kento/svn-repo/sesami/trunk /work/sesami

変更情報

$ svn status Day.txt

変更点

$ svn diff Day.txt

コミット(チョックイン)

  • レポジトリに作業コピーを保存する
    $ svn ci -m "comment"

ログ

  • 通常
    • 最新の情報を見るには-v(--verbose)オプションをつけるかsvn updateをする必要がある
      $ svn log Day.txt
  • 詳しく
    $ svn log --verbose Day.txt

アップデート

  • レポジトリと作業コピーとのバージョンの同期
    • svn update
      • A:新しく追加されたファイル
      • U:アップデートされたファイル
      • D:削除されたファイル
      • G:マージされたファイル
      • C:競合によりマージできなかったファイル
        $ svn status --show-updates
                  *        3   Number.txt
          Status against revision:      4
        $ svn update
          U    sesami/trunk/Number.txt
        $ svn status --show-updates
          Status against revision:      4

レポジトリへ新規ファイル追加

  • 作業コピーにファイルが追加されたことを知らせる(コミット対象ファイルとする)
    • 注意:追加されたことを知らせるだけなので、レポジトリに実際のファイルを追加するためにはsvn commitでコミットを実行する必要がある。
      $ svn add <add_file.txt>

チェックアウト元を調べる

$ svn info <作業ディレクトリ>

属性操作

  • /.subversionで自動設定できる

  • subversionで提供されている属性の種類
    • svn:executable|この属性をセットすると実行ファイルとなる
      • 属性値は空でよい
      • chmod +x を実行してもレポジトリ内では反映されない
    • svn:ignore|ディレクトリにセットするものでその中をファイルを属性値にしたがって管理対象外とする
      • *.class *.bakを管理対象外とするための属性値
        ----------------------------
        *.class
        *.bak
        ----------------------------
    • svn:eol-style|改行コードを設定
      • native:クライアントOSで予期される形式へ変換
      • CRLF
      • LF
      • CR
    • svn:mime-type
  • 属性を設定する
    $ svn propset <属性名(任意)> "zokusei test" Day.txt
  • 属性を編集
    • 環境変数SVN_EDITORにエディタを設定しておく必要がある。
      $ svn propedit <属性名> Day.txt
  • 属性の一覧表示
    $ svn proplist Day.txt
  • 属性値を表示
    $ svn propget <属性名> Day.txt
  • 属性を削除
    $ svn propdel <属性名> Day.txt

コピー

  • cpコマンドと同じ
    • ただワイルドカードは使用できない
      $ svn copy <copy_from.txt> <to.txt>

移動

  • mvコマンドと同じ
    • ただワイルドカードは使用できない
    • 名前変更にも使用できる
    • 作業コピーだけでなくレポジトリも直接操作できる
      • 例)つまり<move_from.txt>=svn://olio/sesame/trunk/util、<to.txt>=svn://olio/sesame/trunk/commonとしてもよいということ
        $ svn move <move_from.txt> <to.txt>

戻る

  • 編集したファイルをチェックアウトした状態に戻す
    $ svn revert <revert file>

競合解消

  • 競合状態を解消することができたらその旨をsubversionに知らせる必要がある
    $ svn resolved <competition file>

一行ごとの履歴

  • 誰がファイルのどの行を編集したかがわかる
    $ svn blame <file>

マージ

  • リビジョンごとのマージをする
    • 特定のリビジョンの更新を取り消したい場合に使用する
    • <マージ先ファイル>=<マージ元ファイル> かつ カレントディレクトリの場合は一方を省略できる
      $ svn merge -r <マージ先リビジョン番号(取り消したいリビジョン番号)>:<マージ元リビジョン番号> <マージ先ファイル> <マージ元ファイル>

ITspe

コマンド

check out

$ svn co --username <XXmXXXXX> http://www.sds.itpro.titech.ac.jp/2008/svn/CMinusPlus .