CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リポジトリはsvn、クライアントはgitを使う

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

サーバのリポジトリを svn として、git で開発を進められるかを試用してみた。なので、思いっきり git っぽく行うより、svn の使用感を残しつつ git を使う感じで進める。

git は Windows環境が整ってからと思ってて、まだ日本語ファイルに弱い気がするけど、msysgitとTortoiseGit の併用で使用に耐えるなと思ったので git を使おうかなと思い始めた。


まず、チェックアウト。svn っぽい考えとしては、HEADリビジョンのチェックアウトで十分だろう。

git svn init http://path/to/svn/trunk/prj
git svn fetch -rHEAD

ここで svn ではコーディグ開始となるが、今回 git なので、branch してからコーディングしようと思う。なぜなら、svnでは branch はコストが高くて極力避けていたが git では branch した方がコストが下がると期待してるから。

さて、コーディングする内容を issue-XXX とした場合、

git checkout -b issue-XXX

とすると branch を作成しつつチェックアウトする。この場合、masterと同一なので何もソースコードに変更はないけども。

~~~ ここでソースコードをバリバリ書く。~~~

書いたらコミットする。

ファイルを追加するときは git add しておく。

git commit -a

このコミットはローカルの gitリポジトリにコミットするだけなので、サーバのsvnへは影響しない。

というわけで、サーバの svn にコミットする。前準備として svnの最新版と同期をとるが、コミットは本線の master で行うので、戻っておく。

git checkout master
git svn fetch

svn側での変更差分を master, issue-XXX にマージする。

git rebase git-svn
git rebase git-svn issue-XXX
git rebase issue-XXX

うーん。rebase が多くでめんどくさい。。。

issue-XXX に branch したからなので、master でだけ作業すりゃ手間は増えないじゃんと思う。でも、複数のissueを平行して行う場合、ついついゴチャマゼにコーディングして、AAAはできたけどBBBが不十分でコミットできない...というのがすごいストレスだったので、この手間はかけるべきなんだろう。

確かに svnでもフォルダをわけて個別に checkout すればできたけど遅くてやる気にならなかった。これは svnだけの問題でなく http とかいろいろあるけども。

話を戻すと、複数のissueがあれば rebase を使って master にマージすべき。merge コマンドを使うときっと、Merged .. とかいう要らないログが増えてちょっと恥ずかしくなる。

(もし、そうなったら git commit --amend)

svn にコミットする。

git svn dcommit

これでおしまい。だけど、このコミットは svn commit よりやたら時間がかかる気がする。こればっかりは我慢するしかないのか。。。

ちなみに慣れるまで、1コマンド毎くらいに

gitk --all 

とかで、全体のリビジョンとbranchのツリーを一手ずつ確認しながら進めると、理解しやすいかと思う。


入門Git入門Git
(2009/09/19)
濱野 純(Junio C Hamano)

商品詳細を見る

TortoiseSVN 1.6 リリースノートを読んだ

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

昨日、Subversion 1.6.0 のリリースノート読んだので、TortoiseSVN 1.6のリリースノートも読もうかなと。

感想としては、堅実なアップデートって感じ。細かな所が改善されてておもしろそうなので、近いうちに乗り換えてみよう。

Compatibility Concerns

古いサーバでも問題なく動くけど、一部の機能が使えないよ...らしい。

SVNと同じくワーキングコピーは 1.6用に自動的にアップグレードされる。あと、やっぱ1.5に戻すって時のPythonスクリプトがあるって。

New Features / Enhancements

BDBでも file:/// アクセスできるようになった。というか、できなかったんだ

tree conflictに関して...はSVN同様、よくわからん

ログのキャッシュがよくなった。設定ダイアログに詳細があるみたい

リビジョングラフの出力がいい感じになったみたい。

IBugtraqProvider2で、コミットをリジェクトしたり、なんかバッチ処理かましたりしやすくなった。既にあった気がするんだけど、より使いやすくなったんでしょう。あと、プラグインが作りやすくなったみたい。

bug ID(Trac IDだったり?)で検索できるようになった

Known issues in 1.6

ファイル単位の externals設定できるようになった。


Subversion実践入門?達人プログラマに学ぶバージョン管理Subversion実践入門?達人プログラマに学ぶバージョン管理
(2005/08)
Mike Mason

商品詳細を見る

Subversion 1.6.0 Released

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

流行りは git。でも、仕事で使うのは Subversionという人が多い気がする。 さておいて、オレンジニュースで知ったんだけども、svn 1.6.0 がリリースされたので、ちょっと読んでみる

Compatibility Concerns

とりあえず上位互換してるみたい。

サーバ側は、dump load しなくても動くみたいで、なんかあったら svnadmin upgrade する感じでよさげ。

クライアント側は、ワーキングコピーが自動変換かかるので、TortoiseSVNとコマンドラインのsvnの両方を使う場合は同時にアップグレードしなきゃだめそう。

コマンドラインの出力メッセージが変った。proplist(--verbose)、status、update。ログ解析してる場合は要注意かな?

pre-lock hookがなんか変った。

New Features

パスワード関係。警告表示とOS連携とか...

コマンドラインで指定するパスなんだけど、^/ でリポジトリルートを指すようになった。svn ls ^/trunk...。これいいな~っ。

svn:externals で、ファイル指定ができるようになった。move/removeはできんが、copyはできるみたい。あとファイル名の空白にも対応らしい。

tree conflictの対応とあるけど、よくわからん。直感的な操作に近くなったってことだな(笑)

ファイルシステム関係は... Memcached対応がちょっち目をひいた!

Python binding関係...

Enhancements and Bugfixes

コマンドラインで conflictしたときに、TortoiseSVNのように mine, thierとか選択できるようになったので、楽になったっぽい。

コマンドラインで --exclude が増えた。checkoutの除外指定に使う。これは嬉しいかも

svnserveのログ機能

mod_dav_svnで URIの後ろに ?p=peg&r=rev を指定できるようになった。 メールで「当時のドキュメントはここにあります!」とリビジョン指定で示せるようになったんかな。まー確かに不便だなと思ってたとこだ。

-r のrev指定を複数できるようになった。

--trust-server-cert。httpsなのにサーバ証明書がダメなときに許容する

Subversion 1.4.x series no longer support

1.6になったし、そろそろ 1.4.x は勘弁してね。

New Dependency: SQLite

--with-sqlite を付けて makeしたら、svnで利用するらしい。 sqliteはやってる気がする。sqliteってお手軽で使いやすいもんね。


Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
(2007/04/21)
Mike Mason

商品詳細を見る

Macで Trac+apache の環境構築

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

tracをapache経由にする。mod_pythonを使う。

$ sudo port install apache2
...
libtool: compile: unable to infer tagged configuration
libtool: compile: specify a tag with `--tag'
make[3]: *** [unixd.lo] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

なんかエラーでた。先人によれば、'--trac=CC'とすればいいともあるが、portのupgradeでもなんとかなるともある。

$ sudo port upgrade libtool
$ sudo port upgrade apr
$ sudo port upgrade apr-util
$ sudo port install apache2
$ sudo port install mod_python25
# apache2 をシステム起動時に自動起動
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
$ sudo vim /opt/local/apache2/conf/httpd.conf
+ LoadModule python_module modules/mod_python.so
$ sudo /opt/local/apache2/bin/apachectl restart

そういえば、前にapacheの設定をしてたので、事前に[システム環境]→[共有]→[パーソナルWeb共有]のチェックを外しておく。http://localhost/ にアクセスしてapacheのページが見えることを確認。

httpd.confはユーザ用ディレトリでできるだけ書くことにする。

$ vim /opt/local/apache2/conf/httpd.conf
 <Directory />
     Options FollowSymLinks
-    AllowOverride None
+    AllowOverride All
     Order deny,allow
     Deny from all
 </Directory>

+Include /Users/user1/Sites/httpd.conf

pythonのチェックをしてみる。

$ vim ~/Sites/httpd.conf
<Location /mpinfo>'
   SetHandler mod_python'
   PythonInterpreter main_interpreter'
   PythonHandler mod_python.testhandler'
</Location>'
$ sudo /opt/local/apache2/bin/apachectl restart

として、http://localhost/mpinfo にページが表示されるのを確認。

tracの設定

$ mkdir ~/Repos/trac/.egg-cashe
$ chown -R www:www ~/Repos/trac
$ vim ~/Sites/httpd.conf
+<Location /trac>'
+  SetHandler            mod_python'
+  PythonInterpreter     main_interpreter'
+  PythonHandler         trac.web.modpython_frontend'
+  PythonOption TracUriRoot      /trac'
+  PythonOption TracEnvParentDir /Users/user1/Repos/trac/'
+  PythonOption PYTHON_EGG_CACHE /Users/user1/Repos/trac/.egg-cache'
+
$ sudo /opt/local/apache2/bin/apachectl restart

として、http://localhost/trac でtracのindexページにアクセスできることを確認


入門Trac第2版―Linux/Windows対応入門Trac第2版―Linux/Windows対応
(2009/08)
高山 恭介

商品詳細を見る

Macで Trac+git の環境構築

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

最近、趣味プロするときは git を使ってみていて、メモ代わりに trac も繋げてみようかなと。

キーワードはこんな感じだった気がする。

  • python2.5
  • trac0.11.2.1
  • easy_install
  • X-MAC-JAPANESE

素のpythonが古そうだったのでてきとうに 2.5 に差し替えてみる

$ python
Python 2.3.5 (#1, Nov 26 2007, 09:16:55) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363) (+4864187)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D

$ sudo port install python2.5
$ sudo sudo ln -s /opt/local/bin/python2.5 /opt/local/bin/python
$ sudo port install py25-setuptools

tracと GitPlugin のインストール

$ sudo easy_install-2.5 trac
..
Installed /opt/local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-macosx-10.3-i386.egg
Finished processing dependencies for trac
$ sudo easy_install-2.5 http://trac-hacks.org/svn/gitplugin/0.11/

リポジトリ用のディレクトリを掘って、git-clone。そうそう。Apache(httpd)は使わないつもり

$ mkdir -p ~/Repos/trac/gitrepo/
$ mkdir -p ~/Repos/git/gitrepo/
$ cd ~/Repos/git/gitrepo/
$ git clone --bare ~/using-repo gitrepo

gitは使ってたリポジトリから cloneした。そういえば、using-repo -> gitrepo に push できるのかな(?)

やりたくなったら調べよう。gitrepo の直下は .gitの中身相当が入る。

次に trac リポジトリ。

一人用でアクセス制限なしなので、anonymousに必要に応じて権限を足す方向で。あと、sqliteがどうのとエラーが出たので sqlite をてきとうにアップデートして rehashと思ったが bashに無かったので、途中でシェルを立ち上げなおしたりしてる。

$ sudo port install py25-sqlite3
$ trac-admin ~/Repos/trac/gitrepo/
Welcome to trac-admin 0.11.2.1
Interactive Trac administration console.
Copyright (c) 2003-2008 Edgewall Software

Type:  '?' or 'help' for help on commands.
        
Trac [/Users/user1/Repos/trac/gitrepo]> initenv
Creating a new Trac environment at /Users/user1/Repos/trac/gitrepo
...
Repository type [svn]> 
...
Path to repository [/path/to/repos]> /Users/user1/Repos/git/gitrepo
...
Congratulations!

Trac [/Users/user1/Repos/trac/gitrepo]> permission add anonymous TRAC_ADMIN CONFIG_VIEW
Trac [/Users/user1/Repos/trac/gitrepo]> quit

なーんか trac-admin がエラー出る。文字コードっぽいのと、readlinkっぽいのが。上記の通りならエラーでずに使えるのでよしとする。

conf/trac.ini の設定変更は下記くらいだったはず

+ [components]
+ tracext.git.* = enabled

  [git]
- git_bin = git
+ git_bin = /opt/local/bin/git

で、早速 tracd を立ち上げると

LookupError: unknown encoding: X-MAC-JAPANESE

とか出る。先人の知恵をいろいろ探してみたところ、2.5だけどうも問題がある様子。下のどちらかで対策するものが多かった。

  • python2.5 のソースにパッチ
  • trac のエラーが出た付近にパッチ

パッチはあてない方がいいなぁーとてきとうに試した。

ちらっとLANGがどうのとあったので試したけどLANGは無視してそうなのがわかって、あと sudo したときに環境がどう引き継がれるかが問題な気がするもののよく調べず、そういや LC_ALLはどうだろ試したら...うまくいった。

$ LC_ALL=ja_JP sudo tracd -p 8080 `pwd` 

ポートは /etc/services を見ると httpd が予約だけど使ってないからよし(笑)

無事、http://localhost:8080/gitrepo で、tracにアクセスできたー。

まだ、ソースに書いた日本語が化けてるけど、疲れたのでしまい。しまい。


入門Trac第2版―Linux/Windows対応入門Trac第2版―Linux/Windows対応
(2009/08)
高山 恭介

商品詳細を見る

«  | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。