TortoiseSVNで変更があったファイルだけ取り出したい

変更があったファイルのみをTortoiseSVNで取り出す方法.プログラム案件ではなさそうだけど,デザイン案件だと差分ファイル納品などもちょくちょくあるようです

キャプチャ付き手順

続きを読む

デザイナへのsubversion導入,その後

先月デザイナにバージョン管理(subversion)を使ってもらうために人柱を建てた - LAPISLAZULI HILL#Hatenaというタイトルでsubversionの導入について書いたのだけど,その途中経過とか.前提などは前のエントリィを見てもらうとして,導入の感触や今後の方針などを

現状

  • デザイナ8人,全員に導入完了.現場のディレクタにも導入できた

導入時に失敗したこと

  • インポート・コミット・更新などの動作はちゃんと伝達できたが,削除・名前変更・移動などに関しては十分に伝えていなかった
    • 普段あまり使わないので失念.レポジトリの整合性を保つには必須の概念なので忘れないように

デザイナへの導入の感触

  • すんなり使ってもらえている.要因としては
    • 最近問題が起こったばかりで思いの外導入への意欲が高かった
    • 共有フォルダへのアクセスをしてバックアップよりは,右クリックですぐにサーバに反映ができるTortoiseSVNのほうが手間が少なく使い勝手が良かった
  • 目立ったコンフリクトがおきていない→いままでも更新対象ファイルの意思疎通は行ってきたのでその延長

現状での問題

  • キーボードショートカットなどで更新やコミットができたらもっとよい(特にリテラシが高く作業効率を求めるメンバの意見)
    • そのあたりは工夫などをして欲しい.方法はあると思う.提案も引き続きする
  • DreamWeaverなどでファイル名の一括変更などの場合に,連続性が無くなる
    • これはあきらめる.ちゃんとコメントを書く.連携するのが最高だが…
  • サーバへのアップロード時にいちいちエクスポートするのが面倒
    • FFFTPなどがよく使われているようだが.svnのフォルダを除外することができていないらしい→mirrorでは除外できるが,ふつうにアップロードでは除外できないようだ→他のFTPソフトウェアを探す?

今後の課題

  • tagsを使ってないので使うようにする
  • コミットログのフォーマットなどを決める
  • 現在主に実際にサイトに配置するhtml,css.js,gif,jpgが対象だが,今後は画像制作データなども対象に含めていく
  • subversionを導入した形でのフローの見直し
  • 逆に目立った問題が出ていないので,出た場合の対処方法

概ね順調です.慣れてしまえばいい環境になると思うのですが,この先バージョン管理が無いところに行ったときに困りそうなのは心配です

(追記2007/08/14)

# 2007年08月14日 terazzo 外部ツールのリネームへの連動が課題か。公開に関してはサーバにもsvnを入れてCGIでキックしてリポジトリから直接exportするのはどうだろう
http://b.hatena.ne.jp/terazzo/20070814#bookmark-5561060

この方法はかなり良いと思いました.案件ごとのディレクトリ作ったり,タグを切ったりするのはCGIからできれば便利だと考えていました.Capistranoなどのデプロイのシステムと連携するのが理想のような気がします.リリースミスも少なくなるでしょうし,ミスしてもすぐに戻せるのはよいですね.メインの作業ではないので少しずつでも作っていこうと思います.ありがとうございました

subversionのプロパティを設定して,tracと連携

ソフト/Bug Tracking/trac/TortoiseSVNやSubclipseとチケットを連動 - discypusを参考にTortoiseSVNから設定した.作業コピーのディレクトリのプロパティにあるSubversionタブのpropaty(属性)で属性を追加する

まずはbugtraqとの連携.tracを使っているのでその設定を.http://example.com/tracにあるhogeというプロジェクトの場合の設定.warnifnoissueはコミットに必ずチケットのidが必要なときにtrueにする

bugtraq:url http://example.com/trac/hoge/ticket/%BUGID%
bugtraq:label Ticket id
bugtraq:message (#%BUGID%)
bugtraq:warnifnoissue true

右上に"Ticket id"というフィールドができる

TortoiseSVN専用のプロパティtsvn:logtemplateを設定すればログのテンプレートも設定可能です.やってませんが
http://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-dug-propertypage.html#tsvn-dug-propertypage-tsvn-props

1.5になると「Web ベースリポジトリビューアとの統合」も可能になるみたい
http://tortoisesvn.net/docs/nightly/TortoiseSVN_ja/tsvn-dug-repoviewer.html

細かいところで進化を続けてますねぇ

デザイナにバージョン管理(subversion)を使ってもらうために人柱を建てた

というわけで,説明+ハンズオンを2時間ほどやった.最初に人柱になったデザイナは自分とつきあいもそこそこ長く,コンピュータのリテラシも高め.案件の規模も手頃.経験も積んでいることもあって,利点はすぐに理解してもらえたようだ.うまくいくかはわからないけど始まったのは大きい.今回の導入の前提や考えてるポイントとか列挙

前提

  • デザイナは全部で8人
  • 3人はコンピュータ使用のリテラシもモチベーションも高め,アプリも使いこなす
  • 2人は新しいツール・習慣に拒否反応を示す可能性アリ
  • 現在のファイル管理は共有フォルダを使って,日付でバックアップ作成(><)
  • プログラマだと「バージョン管理使わないのは幼稚園児までだよね」とかで済む(ぉ)のだけど,デザイナはそうも云ってられない

目的

  • 度々作業中に先祖返りなどが起こり,そのたびに四苦八苦している
  • バックアップが面倒なので解消したい
  • プログラムチームとの共同作業も多く,プログラマsvnを導入しているので同じように管理したい

考えてるポイント

  • ツールの使い方の伝達
    • プログラマが直接教えるより,デザイナ同士で使い方を共有する
    • 最初はハンズオンで教えてとっかかりを作る
  • 使い始める案件を精査する
    • スケジュールが押してる案件や大規模な案件から使い始めることを避ける
  • 使い始める人も選び・順番に拡大
    • まずはリテラシの高い中からひとり,その後リテラシの高い人間に広める
    • 運良くリテラシの高い人間2人はチームリーダなのでそこからの伝達を期待(もちろん補助も)
  • 管理の対象も順番に拡大
    • まずは出力したhtmlやDreamWeaverのテンプレートなどを管理するところから始める
    • 画像ファイルなどの管理は次の段階で
  • 導入を焦らない
    • 導入により混乱が見られる場合は運用を即時取りやめる→案件を確実に処理することを重視
    • とにかく丁寧にマニュアルなどで解説して,ワークフローに組み込んでいくことが重要

導入例求む

どこかに「こうやって導入して成功/失敗しました」などの情報がないでしょうか.難しいって云われて終わりのところが多いのかなぁ

tracでソースコードの色つけと権限設定

SilverCityのインストール

ソースコードを色付けするためのツール.fedora core 6で.yumに関しては自分のところで足りなかった分.インストールでエラーがでる場合,追加するとよいかも

$ yum install gcc gcc-c++ python-devel
$ wget http://downloads.sourceforge.net/silvercity/SilverCity-0.9.7.tar.gz
$ cd SilverCity-0.9.7
$ python setup.py install

pythonはアプリケーションのインストール方法がいつでも同じで,わかりやすい.アーカイブが一人歩きしてもインストールできるし.WSGIといった仕組みもいい感じ

PHPのソースを色つきで表示するならtrac.iniを書き換える必要あり.enscript_modesとmime_mapにPHP関連の記述を足す

[mimeviewer]
enscript_modes = text/x-dylan:dylan:4, text/x-php:php:4
enscript_path = /usr/bin/enscript
max_preview_size = 262144
mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb, text/x-php:php
php_path = /usr/bin/php
silvercity_modes =
tab_width = 4

権限の設定

認証自体はふつうにbasic認証で.権限を設定するためにtrac-adminコマンドを使う.trac立てれば,wikiに説明がある

認証設定に関するオプションはこんな感じ

permission list [user]
        -- List permission rules

permission add <user> <action> [action] [...]
        -- Add a new permission rule

permission remove <user> <action> [action] [...]
        -- Remove permission rule

tracの権限はパーミッションをグループ化できるので,グループを作って,その単位で権限付与するといい感じ.developerというグループを作って・そのグループに権限を付与して・ユーザにさらにそのグループを付与するという手順になる.ここではdeveloperというWikiの削除権限があるグループを作成した(あまり意味無いけど)

$ trac-admin /var/trac/project permission add developer WIKI_DELETE
$ trac-admin /var/trac/project permission add lapis25 developer
  • anonymousグループはログインしている人も,していない人も含めたすべての人
  • だから先ほど作ったdeveloperというグループはanonymousグループの持っているすべての権限を持っている
  • またログインした人というグループもあり,それはauthenticatedという名前でanonymousグループのすべての権限を持っていて,さらに権限を追加することもできる
  • anonymousグループの権限が強いので,そのまま使うのならほかのグループを作る意味はあまりないような気もする

SELinuxが導入されているサーバでsubversionのレポジトリを作成

fedora core6で.chconコマンドを使う.selinuxはさっぱりわかっていない

% sudo svnadmin create /var/svn/repos
% sudo chown -R apache.apache /var/svn/repos
% sudo chcon -R system_u:object_r:httpd_sys_content_t /var/svn/repos

ちょっとメモ.Zオプションでcontextを表示する

# ls
# -Z, --context
#        Display security context so it fits on most displays.  Displays only
#        mode, user, group, security context and file name.
% ls -Z
drwxr-xr-x  apache apache system_u:object_r:httpd_sys_content_t repos

# ps
# -Z              display security context format (SELinux, etc.)
% ps Z
LABEL                             PID TTY      STAT   TIME COMMAND
system_u:system_r:getty_t        2131 tty2     Ss+    0:00 /sbin/mingetty tty2
system_u:system_r:getty_t        2142 tty3     Ss+    0:00 /sbin/mingetty tty3
system_u:system_r:getty_t        2145 tty4     Ss+    0:00 /sbin/mingetty tty4
system_u:system_r:getty_t        2146 tty5     Ss+    0:00 /sbin/mingetty tty5
system_u:system_r:getty_t        2167 tty6     Ss+    0:00 /sbin/mingetty tty6
system_u:system_r:getty_t        4207 tty1     Ss+    0:00 /sbin/mingetty tty1
user_u:system_r:unconfined_t    21539 pts/0    S      0:00 zsh
user_u:system_r:unconfined_t    21548 pts/0    R+     0:00 ps Z