RedmineのRails3.1についての解説

471 views
Skip to first unread message

Toshi MARUYAMA

unread,
Jun 27, 2011, 11:38:22 PM6/27/11
to Redmine Users (japanese)
RedmineのRails3.1についての解説

まるやまです。

日本語で記録に残る媒体というとここしか思いつかなかったので、
こちらに投稿します。
お許し下さい。

こちらにクレームっぽい文章が上げられています。
http://d.hatena.ne.jp/JironBach/20110628/1309210203

無理解にもほどがあるので、具体的に解説します。

1.bundler対応ブランチ

> https://github.com/marutosi/redmine/tree/rails3.1-merged
> を落としたのですがどう見てもRails2.3アプリにしか見えません
> Gemfileにも
> gem 'rails', '2.3.11'
> と書いてあります。
> これのどこが「Rails3.1-merged」なのかさっぱり理解できないんですけど
> このリビジョンは何なんですか?

おそらくcloneをしたと思うので、cloneしてみます。
本来cloneをする必要は無いのですが。

$ git clone git://github.com/marutosi/redmine.git
$ cd redmine
$ git branch
* redmine-bundler-20110618

これは "Use Bundler (Gemfile) for gem management"用のブランチです。
http://www.redmine.org/issues/5638

今のRedmine1.2をbundler対応にしようというブランチなので、
> gem 'rails', '2.3.11'
なのは当然です。

2.Rails3.1

こちらが、今現在も稼働しているgithub上のRedmineのSVNのミラーです。
https://github.com/edavis10/redmine

ここをまずcloneするのが筋です。

$ git clone git://github.com/edavis10/redmine.git
$ cd redmine

次にリモートを追加します。

$ git remote add marutosi git://github.com/marutosi/redmine.git
$ git fetch marutosi
remote: Counting objects: 2408, done.
remote: Compressing objects: 100% (556/556), done.
remote: Total 1663 (delta 1153), reused 1515 (delta 1043)
Receiving objects: 100% (1663/1663), 292.72 KiB | 254 KiB/s, done.
Resolving deltas: 100% (1153/1153), completed with 386 local objects.
From git://github.com/marutosi/redmine
* [new branch] rails3-merged-20110626 -> marutosi/rails3-
merged-20110626
* [new branch] rails3-straight-20110625 -> marutosi/rails3-
straight-20110625
* [new branch] rails3.1-20110625 -> marutosi/rails3.1-20110625
* [new branch] rails3.1-merged -> marutosi/rails3.1-merged
* [new branch] redmine-bundler-20110618 -> marutosi/redmine-
bundler-20110618
* [new tag] r4446 -> r4446
From git://github.com/marutosi/redmine
* [new tag] tag-rails3-merged-20110625 -> tag-rails3-
merged-20110625

$ git log --graph marutosi/rails3-merged-20110626

* commit 77639a14734a899f1e8d16de053f3173b472118c
|\ Merge: ef8e3db 254a510
| | Author: Toshi MARUYAMA
| | Date: Sun Jun 26 20:10:47 2011 +0900
| |
| | Merge
| |
| | --HG--
| | branch : rails3-merged-hg-git
| |
| * commit 254a51091324e81588761dcf4c64df1074855466
| | Author: Toshi MARUYAMA
| | Date: Fri Jun 17 08:14:46 2011 +0900
| |
| | Rails3: extra: remove unused files.
| |
| | --HG--
| | branch : rails3-straight-20110625-hg-git
| | extra : transplant_source : %A7%209jZ%D4%BD%AF%D7%C5%9F%F2%0FqO
%7C%F6%E5%02%28


* | | | | commit ef8e3db860cc51f7efe0db8807b89e5902cb18a3
|\ \ \ \ \ Merge: 3e126b5 ee527ab
| | |_|_|/ Author: Toshi MARUYAMA
| |/| | | Date: Sat Jun 25 11:46:16 2011 +0900
| | | | |
| | | | | Merge
| | | | |
| | | | | --HG--
| | | | | branch : rails3-merged-hg-git
| | | | |
| * | | | commit ee527ab47c3f94dd7853a586b14314b456ffa553
| | |_|/ Author: Toshi MARUYAMA
| |/| | Date: Thu Jun 23 11:19:05 2011 +0000
| | | |
| | | | replace RAILS_ROOT to Rails.root at test/test_helper.rb.
| | | |
| | | | git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/
trunk@6123 e93f8b46-1217-0410-a6f0-8f06a7374b81

Redmineのtrunkのリビジョン6123とマージしたことがわかります。

以上、クレームの前提が間違っているので、ここまでにしておきます。

Toshi MARUYAMA

unread,
Jun 27, 2011, 11:45:49 PM6/27/11
to Redmine Users (japanese)
まるやまです。

On Jun 28, 12:38 pm, Toshi MARUYAMA <marutosi...@yahoo.co.jp> wrote:
> RedmineのRails3.1についての解説

git log のブランチ指定間違いましたが、私のgithubのリポジトリにあるリビジョンは
全て6123とマージ済みです。

straightというのは、小規模の改変でしたら、rebaseをするのが筋なのですが、
新たにリビジョンを直線的にした方が、これから行う可能性のあるrebaseが楽になるだろう
ということで、作ったものです。

Toshi MARUYAMA

unread,
Jun 28, 2011, 12:29:01 AM6/28/11
to Redmine Users (japanese)
まるやまです。

On 6月28日, 午後12:38, Toshi MARUYAMA <marutosi...@yahoo.co.jp> wrote:
> RedmineのRails3.1についての解説
>

http://d.hatena.ne.jp/JironBach/20110628/1309210203
> 私としてはJeremyさんが本家を無視して

これもgitのリビジョングラフを見れば、本家への貢献を意識していることが
簡単に分かります。

$ git log --graph 7df21d667053310161a8d42f93c61

* commit 7df21d667053310161a8d42f93c615a78b3946c3
| Author: Gonçalo Silva
| Date: Fri Jul 30 01:06:39 2010 +0100
|
| support for Rails 3 rc1
|
| changes:
| - fixed boot
| - autoloading lib/ (which is not autoloaded in rc1, but will be
on rc2)
| - enabled deprecation warnings in development
|
* commit 80d9c368af97f174617d2b5314cd81bc7ecf5c66
| Author: Gonçalo Silva
| Date: Fri Jul 30 01:04:52 2010 +0100
|
| ignoring Bundler's /installed_gems
|
* commit 4a278cb8226d4ba33757df33e18c1a573c6db49b
| Author: Gonçalo Silva
| Date: Fri Jul 30 00:51:09 2010 +0100
|
| using tap instead of returning
|
* commit 5aa90cc7666c57cce5547cca08e9891a724c3ca2
|\ Merge: 146d354 bd1384d
| | Author: Jeremy Kemper
| | Date: Sat Jul 3 12:54:00 2010 -0700
| |
| | Merge branch 'master' into rails3
| |
| | Conflicts:
| | .gitignore
| | app/views/common/_calendar.rhtml
| | config/environments/test.rb
| |
| * commit bd1384db7da40de4d883b6e8cca5081f414113a9
| | Author: Eric Davis
| | Date: Thu Jul 1 18:49:25 2010 +0000
| |
| | Added hook :controller_timelog_available_criterias
| |
| | git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3826
e93f8b46-1217-0410-a6f0-8f06a7374b81

合計4回、gitのmaster=svn trunkとマージしています。

Toshi MARUYAMA

unread,
Jun 28, 2011, 7:41:00 AM6/28/11
to Redmine Users (japanese)

まるやまです。

折角の機会ですので、RedmineのSubversionのリビジョン管理について
書きたいと思います。

「Subversion上にブランチを作らないのですか?」
との問いですが、最近は、1.2-stable、1.1-stableのようなstableと、
trunkしか使っていません。

現在のリビジョン管理では、trunkで更新していったものに対して、
次のメジャーリリースの数週間前にブランチが作成されます。
これは他のオープンソースプロジェクトにおいては、コードフリーズと呼んでいるものに
該当するかと思います。

trunkもCI Serverの対象になっており、正常動作することを保証しています。
http://www.redmine.org/builds/index.html

ですので、trunkと言えども、実験的なコードは入れられません。

また、現在の運用では、まず、trunkに入れて、CI Serverのテストが通過してから、
stableに入れるというルールになっています。
これをSubversionでは「マージ」と呼んでいます。
stableに対してのみコミットした場合、次期メジャーリリースでの漏れが発生する
可能性がありますが、trunk, stable両方に入れるということで、これを防いでいます。

実は、まだSubverion上に目に見えるブランチがあります。
http://www.redmine.org/projects/redmine/repository/show/sandbox

さらに、「消された」ブランチも存在します。

これは、Mercurialのhgsubversionという拡張を用いた
Subversionの全リビジョンをミラーしたリポジトリです。
https://bitbucket.org/redmine/redmine-all

Mercurialには「名前付きブランチ」というGitには無い機能があり、
Subversionのブランチを忠実に再現しています。
Subversionのブランチの削除を、Mercurialの名前付きブランチのcloseとして再現しています。

$ hg branches
1.1-stable 6117:f850c35918e0
1.2-stable 6116:8bf6caa81dc2
default 6115:7647af387ede
1.0-stable 4955:d10103f89c1a
0.9-stable 3853:72aedf7ef5fb
0.8-stable 3304:3c08d4d012e0
../sandbox/rails-2.3 2618:d79f3571761c
../sandbox/rails-2.2 2479:12f541caa4ed
0.7-stable 2194:fe4e88bbd556
0.6-stable 1242:04c936a7eed4

$ hg branches --closed
1.1-stable 6117:f850c35918e0
1.2-stable 6116:8bf6caa81dc2
default 6115:7647af387ede
1.0-stable 4955:d10103f89c1a
0.9-stable 3853:72aedf7ef5fb
0.8-stable 3304:3c08d4d012e0
../sandbox/rails-2.3 2618:d79f3571761c
../sandbox/rails-2.2 2479:12f541caa4ed
0.7-stable 2194:fe4e88bbd556
0.6-stable 1242:04c936a7eed4
../sandbox/groups 4579:ef51197f3884 (閉鎖済み)
../sandbox/multiple_roles 4578:e6c00dbebc76 (閉鎖済み)
../sandbox/tickets_permissions 4577:96776806a8e9 (閉鎖済み)
work/project_inheritance 4576:fcb31a070fd4 (閉鎖済み)
work/nested_projects 4575:fd2885acea28 (閉鎖済み)
work/groups 4574:41f0e0be7c1a (閉鎖済み)
work/hooks 4573:3970bd53157f (閉鎖済み)
nbc 4572:f014f24ca207 (閉鎖済み)
swistak 4571:483b49785beb (閉鎖済み)
work/rails-2.2 2344:d5264652c372 (閉鎖済み)
work/rails-2.1 2343:1216905eeace (閉鎖済み)
work/rails-2.0 2342:ec09c63fc1d4 (閉鎖済み)
work/mailing_lists 2232:ada4005ff789 (閉鎖済み)
work/gloc-1.2.0 2231:e8fd9fd7672a (閉鎖済み)
work/issue_relations 2230:c7ae0d1453cf (閉鎖済み)
work/rest_sys 2229:1fce73b04e34 (閉鎖済み)
work/time 2228:00522a08f1b4 (閉鎖済み)
work/queries/trunk 2227:f534208c55f5 (閉鎖済み)
work/wiki 2226:424df5aa5fd5 (閉鎖済み)
work/scm 2225:fc2cb3e326d7 (閉鎖済み)
work/git 2224:c61c98da1c10 (閉鎖済み)
0.6 1041:10cc582cc65c (閉鎖済み)

ですので、状況によっては、Subversion上に、Rails3.1対応用のブランチが
作成される可能性もあります。

CVS/Subversionを触られた経験があり、Git/Mercurial/Bazaarなどの分散型を
扱われている方なら理解されているかと思いますが、
Subversionのブランチ、及び、それに対する「マージ」は面倒です。

私は、RedmineのSubversionに対して、このhgsubersionを使ってコミットしています。
また、Subversionの「マージ」は、
MQ (Mercurial Queues) と transplant (gitのcherry-pickに該当)拡張を使っています。


Git/Mercurialを使って、Rails3.1対応を全世界の人の協力を得るのは
ありだと考えています。

Jeremy Kemper、Gonçalo Silva氏が、
Redmine の Thu Jul 1 18:49:25 2010 +0000 のリビジョン3826まで
Git/Mercurial用語での「マージ」済みのものを
私がつい最近の6123に対してGit/Mercurial用語での「マージ」を行いました。
それが、Redmine本家へのこのポストです。
http://www.redmine.org/issues/4796#note-16

Git/Mercurialのリビジョンのハッシュ値も書いてあり、どれがそのリビジョンなのか
分かるようにしています。

さらに、今回、githubのリビジョンを利用させていただいた「お礼」として、
githubでpull requestをJeremy Kemper、Gonçalo Silva両氏に送信し、
Gonçalo Silvaに受け取ってもらいました。
https://github.com/goncalossilva/redmine/pull/1

こうやって全世界の人が協力しあうのがオープンソース・分散型VCSの醍醐味だと思っています。

長くなりましたので、以上です。

Reply all
Reply to author
Forward
0 new messages