cvs at ki.nu
emacs-20.3+canna+wnn+sj3 を cvs で管理
といいながら殆ど自分用の覚えです。
(内)の数字の順に操作をします。
(0) ~/.cvsrc に -ko を付けておく (add checkout diff import update)
# 以下の例は emacs で patch を作る時の専用
add -kb -ko
checkout -ko
diff -ko
import -ko -W "*.elc -k 'b'"
update -ko
setenv PATCHES /home/ftp/pub/emacs-20.3+c+w+s/patches
setenv PUB /pub/Mule
setenv CVSROOT /home/cvs # ここが保管庫 (Repository)
cvs init
(1) tar zxf $PUB/emacs-20.3.tar.gz ; tar zxf $PUB/leim-20.3.tar.gz
| cd emacs-20.3
v (3) patch -s -p0 < $PATCHES/20.3+canna+wnn.patch-19980917
+------------+ :
| Emacs-20.3 +--- (Patch)--->+------------+
+------------+ + C+W 0917 | 【これらは輸入する材料】
: +------------+
v :
(cd emacs-20.3) .
(2) cvs import -I \! -W "*.elc -k 'b'" -m "1980819 Emac-20.3" emacs-20 FSF_DIST emacs-20_3
: . repo. Vendor Release
: . Tag Tag
: v
: (5) cvs import -I \! -W "*.elc -k 'b'" -m "+Canna+Wnn+Sj3" emacs-20 EMCWS d19980917
: : repo. V.Tag R.Tag
: v この時殆んどが U emacs-20/lisp/buff-menu.el となること
N new (新しく加わったもの)
: EMCWS +------+ +------+ I ignore (*.elc)
: +------+ 0917 +--+ 0919 |
: / +------+ +------+
: /
: / (4) cvs rtag -b EMCWS emacs-20
: / (3),(4) は順不問
v /
FSF_DIST +-----+ +-----+ +-----+
--+ 1.1 +---- -+ +-- -+ +--
+-----+ +-----+ +-----+
20_3 20_3_90 20_3_91
(差分を取って見る)
cvs rdiff -r emacs-20_3 -r d19980917 emacs-20
(cd /fresh-directory)
(6) cvs co -r d19980917 emacs-20
cvs status -v emacs-20/lisp/canna.el (この結果は最後に)
cd emacs-20
(7) patch -s -p1 < $PATCHES/19980917-19980919.patch
次のものはうまく行かない
(10) cvs commit -m "19980919, Mew-1.93/patches"
cvs commit: sticky tag `d19980917' for file `lisp/egg.el' is not a branch
それで、次のように update -A をする。
(8) cvs update -A
(10)' cvs commit -m "19980919, Mew-1.93/patches; murata patches; canna.el"
(11) cvs tag d19980919
patch -s -p1 < $PATCHES/19980919-19980919a.patch
patch -s -p1 < $PATCHES/19980919a-19980920.patch
cvs commit -m " remove ; canna:*local-map-backup* (current-local-map)) ;canna-henkan-region "
cvs tag d19980920
patch -s -p1 < $PATCHES/19980920-1998920a.patch
patch -s -p1 < $PATCHES/19980920a-19980921.patch
cvs commit -m "src/Makefile.in(remove sj3 error),canna-touroku-region"
cvs tag d19980921
rm src/paths.h ; rm lib-src/Makefile
cvs remove src/paths.h; cvs remove lib-src/Makefile
cvs commit -m "remove two unnecessary files, src/paths.h,lib-src/Makefile"
cvs tag d19980922
patch -s -p1 < $PATCHES/19980922-19981005
cvs commit -m "adding sj3 capabilities(anon), fix _crypt not defined(Ishiguro)"
cvs tag d19981005
patch -s -p1 < $PATCHES/19981005-19981010
cvs commit -m "wnn-egg.el, make egg:henkan-mode-in-use buffer-local(Yamada)"
cvs tag d19981010
patch -s -p1 < $PATCHES/19981010-19981011
cvs commit -m "sj3-client.el, set sj3-server-buffer as unibyte.; \
sj3-client.el and sj3-egg.el, minimize diffs from original."
cvs tag d19981011
## 19981011 版の差分は次のようにして作る。
cvs rdiff -u -r emacs-20_3 -r d19981011 emacs-20 >! \
/home/ftp/pub/emacs-20.3+c+w+s+/20.3+canna+wnn+sj3-19981011-part2
patch -s -p1 < $PATCHES/19981011-19981016
cvs commit -m "sj3-egg.el, add some key definitions to henkan-mode-map.;\
sj3-egg.el, use minor-mode-map-alist instead of local-map.\
egg.el, abolish egg:*local-map-backup*. sj3-egg.el, ditto."
cvs tag d19981016
cvs rdiff -u -r emacs-20_3 -r d19981016 emacs-20 >! \
/home/ftp/pub/emacs-20.3+c+w+s+/20.3+canna+wnn+sj3-19981016
patch -s -p1 < $PATCHES/19981016-19981022
cd ..
cvs commit -m "egg:henkan-mode-in-use was not buffer-local; \
(defun henkan-region-internal, unwind-protect"
% cvs status -v emacs-20/lisp/canna.el
===================================================================
File: canna.el Status: Up-to-date
Working revision: 1.1.1.1 Thu Oct 22 01:25:34 1998
Repository revision: 1.1.1.1 /home/cvs/emacs-20/lisp/canna.el,v
Sticky Tag: d19980917 (revision: 1.1.1.1)
Sticky Date: (none)
Sticky Options: -ko
Existing Tags:
d19980917 (revision: 1.1.1.1)
EMCWS (branch: 1.1.1)
-------------
makoto@a 21:16:57/981226(...making/emacs-20.3.92)> \
? cvs import -m "Emac-20.3.92" emacs-20 FSF_DIST emacs-20_3_92
....
N emacs-20/src/kwzh-fns.c
N emacs-20/src/m/ews4800.h
N emacs-20/src/s/bsdos4.h
N emacs-20/src/s/ux4800.h
....
4 conflicts created by this import.
Use the following command to help the merge:
cvs checkout -jFSF_DIST:yesterday -jFSF_DIST emacs-20
終ってから 20.3.92 を開けたばかりのものと diff して見たが、
diff -ur emacs-20.3.92 emacs-20.3.92-CVS/emacs-20 > diff-result &
次の四点が違っている。
makoto@harry 9:31:46/981231(/home6/making)> grep -n ^+++ diff-result
6:+++ emacs-20.3.92-CVS/emacs-20/configure Sat Dec 26 22:52:38 1998
1708:+++ emacs-20.3.92-CVS/emacs-20/configure.in Sat Dec 26 22:52:41 1998
2141:+++ emacs-20.3.92-CVS/emacs-20/lisp/loadup.el Sat Dec 26 22:57:40 1998
2436:+++ emacs-20.3.92-CVS/emacs-20/src/Makefile.in Sat Dec 26 23:03:08 1998
いとじゅんさんの情報 に次の文がある。
「あるbranch xの先頭のバージョンには、 "x"という名前のtagがついている」
とあるが、
75 9:45 cvs checkout -r emacs-20_3 emacs-20
としたら、多分 20.3 そのものが出て来た気がする(FSF_DIST というのが枝の名前かな)
そこで、
cvs checkout -r emacs-20_3_92 emacs-20
とすれば 20.3.92 が出て来る。(diff -ur にて調査済)
次のようにして差分を作る
cvs rdiff -u -r emacs-20_3_92 -r d19981222 emacs-20 > ! /tmp/20.3.92-19981222
これだと差分の大きさが 2M にもなってしまって変だと思ったら、
20.3+c+w+sj3 から進歩していないものと差分を取ってしまっている。
上で merge したものを commit する必要があるようだ。
いとじゅんさんの情報だと
% cvs update -j r221 -r itojun221
という字も見える。r221 から itojun221 に改造した差分を
いまの新しい r222 に取込むという時に使う。
cvs -n update -jEMCWS -jd19981222
として見たが、そうではなくて、
cvs rtag -b -r emacs-20_3_92 EMCWS-20_3_92 emacs-20
としておいて、EMCWS-20_3_92 の方で作業する。
しかし、次のようにおこられてしまう。
0:47:05/990102(~)> cvs rtag -b -r emacs-20_3_92 EMCWS-20_3_92 emacs-20
cvs [server aborted]: "rtag" requires write access to the repository
少なくとも $CVSROOT/emacs-20 には書けるのだけれど。
ktrace,kdump を使って見たところでは current directory に CVS/Root
という名前のものがあると、それを見てしまい中に書いてある :pserver:
が効いてしまっているようだった。cd /tmp してからだと問題ない。
この後 EMCWS-20_3_92 を取出して、
cvs checkout -r EMCWS-20_3_92 emacs-20
次のようにして、EMCWS から d19981222 の差分を合併すれば
cvs update -jEMCWS -jd19981222
すれば、新しい 20.3.92 から派生した EMCWS が作れると思う。
(そうして commit, tag d19990101 )
しかし手動で「20.3.92 から派生した EMCWS」を作ることも出来ると思う。
(その方が簡単な気もする)