[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44. 変更箇所を表示・管理・メモ (2008/09/20)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=about%20change"
"MeadowMemo/変更箇所を表示・管理・メモ"へのコメント(無し)


この章で紹介していること

ファイルが大きくなってきたり, 何人かで同じファイルを変更したりすると, どこをなぜ 変更したのかが分からなくなってきます. そんな時に便利なものを紹介します



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1 変更箇所を表示する方法 (2004/01/16)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=view%20change"
"MeadowMemo/変更箇所を表示する方法"へのコメント(無し)

まずは,どこを変更したのか表示する方法から紹介します.

44.1.1 変更箇所を表示するコマンド ― パッチの作成 (2003/07/20)   
44.1.2 diff-mode を使う (2003/07/29)   
44.1.3 変更箇所を表示する ― ediff (2004/01/16)   
44.1.4 自動で diff を行う − auto-diff (2003/09/23)   
44.1.5 現在編集中のファイルの diff (2003/10/21)   
44.1.6 変更箇所をハイライト ― change-mode (2003/06/27)   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1.1 変更箇所を表示するコマンド ― パッチの作成 (2003/07/20)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=cmp%20diff"
"MeadowMemo/変更箇所を表示するコマンド―パッチの作成"へのコメント(無し)

変更前のファイルと変更後のファイルがあって,どこが違うのかを知るにはどうすればいいでしょうか.

そのために, unix には変更箇所を表示するコマンドが用意されています. Cygwin がインストールされていれば, Windows でも利用できます.

cmp

最初に変更が見つかった場所を表示する. ファイルが一緒か違うかを判断するコマンド.

例:

~/www/soft> cmp meadow.texi meadow.texiold 
meadow.texi meadow.texiold 異なります: バイト 372 、行 15

comm 元ファイル 新ファイル

変更箇所を表示します. 出力は 3 列からなり, タブで区切られています. 第 1 列には元 ファイルだけにしか含まれない行を, 第 2 列には新ファイルだけにしか含まれない行を, そして第 3 列には両方のファイルに共通に含まれている行がそれぞれ出力されます.た だし,使い勝手はいまいちです.特に,行が増えてくると訳が分からなくなります.オプ ションとして,-[123] を与えると,指定した列を出力しないようにできます.また, ファ イル名を-とすると標準入力と比較します.

例:

~/tmp> comm -1 ./test1.dat ./test2.dat
                1,2
                
                2,3
                
3,4
        5,4

diff file1 file2

ファイルの変更箇所を表示するコマンドとしては最も便利なコマンドです.例の file1, file2 はディレクトリでも可能で,複数のファイルの変更箇所も表示してくれます.ただ し, 両方に同じファイル名のファイルがないと実行できません.

diff dir1/file dir2

と指定すると dir1/file と dir2/file を比較します.

例:3 種類の引数で実行した例です.

~/www/soft> diff meadow.texi.orig meadow.texi
2962c2962
< $Lastupdate: 2004/01/18 12:32:16 $
---
> $Lastupdate: 2004/01/18 12:32:16 $
3514a3515
> ファイルの変更箇所を表示する.

~/www/soft> diff -c meadow.texi.orig meadow.texi
*** meadow.texi.orig    Fri Nov  8 13:05:15 2002
--- meadow.texi Fri Nov  8 13:05:40 2002
***************
*** 2959,2965 ****
    @subsection time-stamp を入力する関数
  
! $Lastupdate: 2004/01/18 12:32:16 $
  
  という行があれば探して, 更新時間を書き換えてくれます. 
  
--- 2959,2965 ----
    @subsection time-stamp を入力する関数
  
! $Lastupdate: 2004/01/18 12:32:16 $
  
  という行があれば探して, 更新時間を書き換えてくれます. 
  
***************
*** 3512,3517 ****
--- 3512,3518 ----
  
  @item diff file1 file2
  
+ ファイルの変更箇所を表示する.
  
  
  @end table

~/www/soft> diff -u meadow.texi.orig meadow.texi
--- meadow.texi.orig    2002-11-08 13:05:15.000000000 +0900
+++ meadow.texi 2002-11-08 13:05:40.000000000 +0900
@@ -2959,7 +2959,7 @@
  @subsection time-stamp を入力する関数
 
-$Lastupdate: 2004/01/18 12:32:16 $
+$Lastupdate: 2004/01/18 12:32:16 $
 
 という行があれば探して, 更新時間を書き換えてくれます. 
 
@@ -3512,6 +3512,7 @@
 
 @item diff file1 file2
 
+ ファイルの変更箇所を表示する.
 
 

この diff -u meadow.texi.orig meadow.texi の出力がパッチと呼ばれます. 実際には

diff -u meadow.texi.orig meadow.texi > patch.txt

として作成します. 順番が大事です. 必ずオリジナルを先に新しい方を後にします. ディレクトリ単位のパッチであれば

diff -crN olddir newdir > patch.txt

として作成します (r はサブディレクトリも対象にする. N は存在しないファイルも対象にする意味). unix の情報を調べると「パッチを当てる」という言葉を見ると思いますが, これはこの差分と古いファイルを見ながら, 新しいファイルを作ることを意味します.

パッチは

patch < patch.txt

として当てます.

また, パッチの先頭行が

--- soft/meadow.texi.orig       2002-11-08 13:05:15.000000000 +0900
+++ soft/meadow.texi    2002-11-08 13:05:40.000000000 +0900

となっていると, patch はカレントディレクトリ下の soft/meadow.texi というファイルを探します. しかし, soft というディレクトリがない時には

patch -p1 < patch.txt

として当てます. こうすると soft/meadow.texi は meadow.texi と見なされます (/が 1 個無視される. -p2 だと usr/local/src => src となります).

以下, diff のメモ

以下, patch のメモ



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1.2 diff-mode を使う (2003/07/29)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=diff%20mode"
"MeadowMemo/diff-modeを使う"へのコメント(無し)

diff ファイルを表示するためのモードです. pcl-cvs にも附属してますので, pcl-cvs を使っているなら,特に入れ直す必要はありません.設定も pcl-cvs の設定で紹介して ますので,特に何もしなくても diff モードが使えるはずです.また, Meadow 1.99 以 降にも附属しています.

pcl-cvs を使っていないならば, ftp://rum.cs.yale.edu/pub/monnier/diff-mode/ からダウンロードし,ロードパ スの通ったところへ置き,以下を追加します.

 
(autoload 'diff-mode "diff-mode" "Diff major mode" t)
(add-to-list 'auto-mode-alist '("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode))

これで, diff ファイルを開くと diff-mode になります.ただ,ほとんど色がつかなくて寂しいので,色を変更してしまいましょう.設定は黒背景用ですので,適当に変更してください.

 
(add-hook 'diff-mode-hook
          (lambda ()
            (set-face-foreground 'diff-file-header-face "light goldenrod")
            (set-face-foreground 'diff-index-face "thistle")
            (set-face-foreground 'diff-hunk-header-face "plum")
            (set-face-foreground 'diff-removed-face "pink")
            (set-face-background 'diff-removed-face "gray26")
            (set-face-foreground 'diff-added-face "light green")
            (set-face-background 'diff-added-face "gray26")
            (set-face-foreground 'diff-changed-face "DeepSkyBlue1")
            ))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1.3 変更箇所を表示する ― ediff (2004/01/16)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=ediff"
"MeadowMemo/変更箇所を表示する―ediff"へのコメント(無し)

diff コマンドで違いは分かりますが,結局ファイルの該当箇所を見直したりする必要があり使い勝手はいまいちです.

そこで, 便利なのが ediff です.これを使うと スクリーンショット のように,各ファイルの変更箇所が表示されますので非常に便利です.

このスクリーンショットを見ると, 右上に小さなウィンドウがあるのが分かりますね. フォーカスもここへ移り, npで変更を次々と見ていくことができます. ?でヘルプが出ますので, 分からなければこれを見るといいでしょう.

この ediff は Meadow に付属してますので, 設定などは不要です. 使い方も簡単, M-x ediffM-x ediff-buffers, M-x ediff-filesとするだけです. ただし, diff が利用できないと使うことができません.

3 つのファイルの比較はM-x ediff-buffers3M-x ediff-files3を利用します.

ファイルを並べて見たいならM-x ediff-mergeとすればいいでしょう. ディレクト リ単位の比較はediff-directoriesediff-directories3でできます.

デフォルトでは, ediff 実行時に小さなウィンドウが出ますが,これを消すには

 
(setq ediff-window-setup-function 'ediff-setup-windows-plain)

とします.

コメント

ediff はバッファの変更箇所をハイライトして非常に分かりやすく、便利です。 しかし、あまりにも変更箇所が多いと、変更箇所はハイライトされません。こ れは

 
(setq-default ediff-auto-refine-limit 10000)

のようにすることで、調節できます。この例だと変更箇所が 10000byte までな らハイライトされます。デフォルトは 1400 です。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1.4 自動で diff を行う − auto-diff (2003/09/23)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=auto-diff"
"MeadowMemo/自動でdiffを行う−auto-diff"へのコメント(無し)

編集前と編集後のファイルの diff を自動で取ってくれるものです.

auto-diff.elからダウンロードできます.

 
(require 'auto-diff)
(add-to-list 'auto-diff-directory-regexp
             (expand-file-name "~/mylisp/.*\.el"))

のようにしておくと,指定したディレクトリのファイル編集時に,編集前のファイルが保存され,ファイル編集後に保存し,編集終了時に diff を取ってくれます.短いものなので,用途に合わせて,適当にプログラムをいじった方が使いやすいかもしれません.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1.5 現在編集中のファイルの diff (2003/10/21)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=diff-with-original"
"MeadowMemo/現在編集中のファイルのdiff"へのコメント(無し)

ネタ元:http://www.mdcnet.co.jp/~keiichi/meadow-tips-ja.shtml

要約

現在編集中の状態と保存されたファイルとの diff を取ることができます

何が問題なのか?

ファイルを変更したところ,どこを変更したのか分からなくなるということはよくありま す.記憶力が悪いだけと言われればそうかもしれんが,変更点を見ることができれば便利 です.

何ができるのか?

保存されているファイルと編集中の状態との diff を取ることができます. ediff も可能な ので,変更箇所が判り易くなります.

設定方法は?

以下を.emacs に追加します

ちなみに, diff-with-original は後藤さん, ediff-with-original は鈴木さんが書かれ たものです.

 
(defun diff-with-original (ediff)
  "Examin diff of current buffer with original file.
        If with prefix, do interactive merge using `ediff-with-original'. "
  (interactive "P")
  (if ediff
      (ediff-with-original)
    ;; simple diff view with diff-mode
    (require 'ediff)
    (let ((diff-buf (get-buffer-create (format "*diff %s*" (buffer-file-name))))
          (ediff-diff-options "-u") ;; is it your favourite?
          (tmpfile (ediff-make-temp-file (current-buffer))))
      (save-excursion
        (set-buffer diff-buf)
        (setq buffer-read-only nil)
        (buffer-disable-undo)
        (erase-buffer))
      (ediff-make-diff2-buffer diff-buf
                               (buffer-file-name)
                               tmpfile)
      (delete-file tmpfile)
      (set-buffer diff-buf)
      (if (< (buffer-size) 1)
          (message "No differences with original file.")
        (condition-case nil
            (progn
              (require 'diff-mode)
              (diff-mode))
          (error))
        (goto-char 1)
        (pop-to-buffer diff-buf)))))

(defun ediff-with-original ()
  (interactive)
  ;; interactive merge using ediff
  (let ((file buffer-file-name)
        (buf (current-buffer))
        (orig-buf (get-buffer-create (concat "*orig " buffer-file-name "*"))))
    (set-buffer orig-buf)
    (setq buffer-read-only nil)
    (buffer-disable-undo)
    (erase-buffer)
    (insert-file file)
    (setq buffer-read-only t)
    (set-buffer-modified-p nil)
    (ediff-buffers orig-buf buf)))

詳しい使い方は?

ファイルを編集中にM-x diff-with-originalあるいはM-x ediff-with-originalとします.

そうすると,保存されているファイルと編集中の状態との差を表示してくれます.

あくまで,保存されたファイルと編集中の保存していない状態との差分です.そのため, 自動保存などを使っていると意味がありません.

その場合には標準コマンドのM-x diff-backup が役立ちます.これは,バックアッ プと現在のファイルとの diff を行ってくれるものです.これなら,バックアップが作成 された時と現在との変更点を見ることができます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.1.6 変更箇所をハイライト ― change-mode (2003/06/27)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=change%20mode"
"MeadowMemo/変更箇所をハイライト―change-mode"へのコメント(無し)

ファイルを変更中に変更箇所が多くなってくるとどこを変更したのか分からなくなってきます.

そこで, 変更箇所を表示してくれるのが change-mode です.これを使うと,ファイルに文字を追加したり,削除したりするとその文字に色がつき,どこを編集したのかが簡単に分かるようになります.

change-mode は http://www.anc.ed.ac.uk/~stephen/emacs/ell.htmlから辿れますので, コピーして change-mode.el の名前でロードパスの通ったところへ置いてください.

設定は以下の通り

 
(autoload 'change-mode "change-mode"
  "Show changes in a distincive face" t)

(autoload 'change-mode-next-change "change-mode" "\
Move to the beginning of the next change, if minor-mode
change-mode is in effect." t)

(autoload 'change-mode-previous-change "change-mode" "\
Move to the beginning of the previous change, if minor-mode
change-mode is in effect." t)

(autoload 'compare-with-file "change-mode"
"Compare this saved buffer with a file,  showing differences
in a distinctive face" t)

(autoload 'change-mode-remove-change-face "change-mode" "\
Remove the change face from the region.  This allows you to
manually remove highlighting from uninteresting changes." t)

(autoload (quote global-change-mode) "change-mode" "\
Turn on or off global Change mode.\"
`change-mode-global-modes'." t nil)

;;(global-set-key '[C-right] 'change-mode-next-change)
;;(global-set-key '[C-left]  'change-mode-previous-change)

後は, ファイルを開いたらM-x change-modeで change-mode になります. 最後の 2 行のコメントを外すと, Ctrl-カーソルキーで変更箇所を移動できます. ただし, 単語単位での移動はできなくなるので, 各モード別に local-set-key で割り当てた方がいいでしょう.

変更箇所の色を消すには, 消したい部分をリージョンで選び, M-x change-mode-remove-change-faceとします. 全部消すなら, C-x h M-x change-mode-remove-change-faceとすればできます.

また,M-x change-mode-rotate-colours とすると,変更箇所の色が変化します.この色のリストは change-mode-colours で設定できます.保存時に実行するようにしておくと,まだ保存していない変更箇所がすぐに分かるようになります.

私は texinfo-mode で change-mode を使い,黒背景向きに色を換えるためにこんな設定を入れています.

 
(setq change-mode-colours '(
                            "SkyBlue"
                            "LightPink1"
                            "CadetBlue2"
                            "plum1"
                            "dark orange"
                            "dark turquoise"))
(setq change-delete-face-foreground "pink")
(setq change-face-foreground "pink")

(add-hook 'texinfo-mode-hook
          (lambda ()
            (add-hook 'local-write-file-hooks 'change-mode-rotate-colours)
            (change-mode)
            (local-set-key "\C-^" 'change-mode-next-change)
            ))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2 変更箇所を管理する方法 (2003/11/17)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=version%20control"
"MeadowMemo/変更箇所を管理する方法"へのコメント(無し)

ファイルを変更したものの,また戻したいということはよくあること.だけど,そのため に,同じような名前のファイルを多数作るのもバカバカしいですね.そんな時に便利なも のを紹介します.

44.2.1 pcl-cvs − バージョン管理 (2003/11/17)   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2.1 pcl-cvs − バージョン管理 (2003/11/17)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=pcl-cvs"
"MeadowMemo/pcl-cvs−バージョン管理"へのコメント(無し)
要約

cvs を Emacs から操作し,ファイルのバージョンを管理することができます.

何が問題なのか?

ファイルを頻繁に更新していると,以前の状態に戻したいことがあります.しかし,普通 に編集していると,そのようなことはできません.そこで,バックアップを取っておき, そこから復元することがあります.

しかし,この方法ではどうしてもファイルが多くなってしまい,目的のデータを探すのが 大変です.

何ができるのか?

バージョン管理ソフトとはプログラムや文書の変更した場所を記録しておくソフトのこと です. それにより,別のフォルダへ保存することなく,いつでも以前の状態に戻すことが できます.

バージョン管理ソフトで有名なものは cvs や rcs があり, Unix では一般的に使われてい ます.しかし,これらはコマンドラインでコマンドを入力する必要があり,面倒です.

そこで, pcl-cvs を使います.これを使うと, Meadow から簡単に cvs を利用できるよ うになります.

必要なもの

当然ですが cvs をインストールして,設定しておく必要があります.61.1 CVS (2004/12/19) を参考 にインストールしておいてください.

以下の説明では, cvs を使うことのできる環境と知識があることを前提としています.

44.2.1.1 pcl-cvs のインストールと設定 − Meadow 1.15 (2003/11/14)   
44.2.1.2 pcl-cvs のインストールと設定 − Meadow 1.99 (2003/11/14)   
44.2.1.3 pcl-cvs の使い方 (2003/11/14)   
44.2.1.4 vc の使い方 (2003/11/14)   
44.2.1.5 自動で CVS にコミット― auto-vc-checkin (2003/11/17)   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2.1.1 pcl-cvs のインストールと設定 − Meadow 1.15 (2003/11/14)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=setup-for-pcl-cvs"
"MeadowMemo/pcl-cvsのインストールと設定−Meadow1.15"へのコメント(無し)

以下のインストールや設定の説明は Meadow 1.15 向けです. Meadow 1.99 では標 準で附属しています.

pcl-cvs はftp://rum.cs.yale.edu/pub/monnier/pcl-cvs/よりダウンロードして, インストールしておきます. ただし, elib も必要なので,これもインストールしてくだ さい,

設定は以下の通り.

 
(load "pcl-cvs-startup")
(setq cvs-cvsroot ":local:/cygdrive/c/home/CVSROOT") ;;要変更
(add-hook 'cvs-mode-hook
          (lambda ()
            (collection-set-goal-column cvs-buffer-name 38)))
(autoload 'diff-mode "diff-mode" "Diff major mode" t)
(add-to-list 'auto-mode-alist '("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode))
;; log はどのコードで書くか決めて
(modify-coding-system-alist 'process "cvs" '(undecided . sjis))

;; pserver ではなく local repository を使うための設定. 詳細は
;; meadow-users-jp メーリングリストの
;; Subject: about pcl-cvs    X-ML-COUNT: 1870
;; Date: Sat
(if (featurep 'meadow)
    (define-process-argument-editing
      "/cvs\\.exe\\'"
      (lambda (x)
        (let ((command (car x))
              (argument (cdr x)))
          (setq argument (cygnus-process-argument-quoting argument))
          (concat
           (unix-to-dos-filename command) " "
           (unix-to-dos-argument (mapconcat (function concat) argument " ")
                                 nil nil nil nil))))))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2.1.2 pcl-cvs のインストールと設定 − Meadow 1.99 (2003/11/14)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=199%20setup-for-pcl-cvs"
"MeadowMemo/pcl-cvsのインストールと設定−Meadow1.99"へのコメント(無し)

以下のインストールや設定の説明は Meadow 1.99 向けです

Meadow 1.99 には pcl-cvs と同じことのできる vc が附属しています.そのため,イン ストールは不要です.

設定も Meadow 1.15 よりも少なく,以下の設定で使うことができます.

 
(setq cvs-cvsroot ":local:/cygdrive/c/home/CVSROOT") ;;要変更

(autoload 'diff-mode "diff-mode" "Diff major mode" t)
(add-to-list 'auto-mode-alist '("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode))
;; log はどのコードで書くか決めて
(modify-coding-system-alist 'process "cvs" '(undecided . sjis))

;; pserver ではなく local repository を使うための設定. 詳細は
;; meadow-users-jp メーリングリストの
;; Subject: about pcl-cvs    X-ML-COUNT: 1870
;; Date: Sat
(if (featurep 'meadow)
    (define-process-argument-editing
      "/cvs\\.exe\\'"
      (lambda (x)
        (let ((command (car x))
              (argument (cdr x)))
          (setq argument (cygnus-process-argument-quoting argument))
          (concat
           (unix-to-dos-filename command) " "
           (unix-to-dos-argument (mapconcat (function concat) argument " ")
                                 nil nil nil nil))))))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2.1.3 pcl-cvs の使い方 (2003/11/14)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=use-for-pcl-cvs"
"MeadowMemo/pcl-cvsの使い方"へのコメント(無し)

まず,M-x cvs-checkout で cvs で管理しているものを適当なディレクトリに checkout しておきます.そして,ファイルを編集後,M-x cvs-examine とします. すると,変更点があるものの一覧を表示できます.変更点がなければファイルの名前は表 示されません.

スクリーンショット.

pcl-cvs の実行結果

Modified とあるのが変更されているファイルなので, nで特定のファイルにカーソ ルを移動して, commit などを行います.

よく使う関数は以下.

各ファイルの状態を見るのは M-x cvs-status でできます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2.1.4 vc の使い方 (2003/11/14)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=use-for-vc"
"MeadowMemo/vcの使い方"へのコメント(無し)

Meadow 1.99 に附属しているものを使っているならば,上記に加えて,ファイル編集中に 以下のキーを使うことができます.

CVS を使っている方なら関数名を見れば大体分かるでしょう.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.2.1.5 自動で CVS にコミット― auto-vc-checkin (2003/11/17)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=auto-vc-checkin"
"MeadowMemo/自動でCVSにコミット―auto-vc-checkin"へのコメント(無し)
要約

何回か保存したら自動的に CVS にコミットします.

何が問題なのか?

CVS は便利なのですが,ファイルを変更しても CVS は実行しなかったりということがありま す. CVS のデータをアップデートしないと,結局以前のデータに戻すことができなくなっ てしまいます.

何ができるのか?

何回か保存すると自動的に CVS にコミットします.これにより,ある程度の変更があれば, その途中経過が CVS に残り以前の状態に戻しやすくなります.

インストール方法

auto-vc-checkin.elをダウン ロードし,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'auto-vc-checkin)

;; 自動でコミットされる頻度を制御
;; この例だと, 3 度保存すると,コミットする
(setq auto-vc-checkin-full-count 3)

;; 自動コミットを使うバージョン管理ソフトを指定
(setq auto-vc-checkin-backend '(RCS CVS SVN))

詳しい使い方

vc がオンになれば,モードラインに CVS:1.12 のようにバージョンが表示されます.この時, auto-vc-checkin が有効になっていれば,「 CVS:1.12+ 」のように「 + 」がバージョンの後 に表示されます.

この状態で編集を行い,保存を「 auto-vc-checkin-full-count 」で指定した回数行うと, CVS に接続しコミットを行います.

うまく動かない

M-x auto-vc-checkinでオン/オフができるので,一度オフにして,再度オンにして みてください.

コメント

結構好き嫌いの分かれる Elisp かな.面倒なことは何でも自動でやってという人と,自分 の把握しないところでコミットされるのは嫌という人がいると思いますから.もし,あな たが前者であれば,便利だと思います.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.3 変更箇所をメモしておく方法 (2003/11/14)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=changelog"
"MeadowMemo/変更箇所をメモしておく方法"へのコメント(無し)

どこをなぜ変更したのかをメモしておかないと,変更箇所が分かっても意味がありません. そこで,変更理由をメモする方法について紹介します.

44.3.1 Chanelog を書こう ― add-change-log-entry (2003/07/20)   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.3.1 Chanelog を書こう ― add-change-log-entry (2003/07/20)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=add-change-log"
"MeadowMemo/Chanelogを書こう―add-change-log-entry"へのコメント(無し)

ファイルを編集して放っておくとすぐに忘れてしまうものです. どうしてこんなことして るんだろう. . . 自分で良いと思ってやったはずなのに, 真剣に悩んでしまう. そんな経 験は誰にでもあるはず. そんな時, Changelog があると, なぜ変更したのかが分かって便 利です.

といってもなかなか面倒で書く気にはならないもの. そんな面倒な Changelog を少しで も便利にしようとするのがこの関数です.

ファイルを編集し終わったら, M-x add-change-log-entryと入力します (モードに よっては C-x C-a に割り当てられています). すると, デフォルトの編集中のファ イルと同じフォルダに Changelog ファイルを作成し, それを開きます. すると, 自動的 に

 
2002-09-12  root  <[email protected]>

        * meadow.texi (add change log):

と入力してくれるので, 後はコメントを書くだけです. 毎回, どのファイルを編集したか などは自分で書く必要はありません.

デフォルトのファイル名は

 
(setq change-log-default-name "Changelog.txt")

と指定できます.

また,名前や メールアドレスは

 
(setq user-full-name "name")
(setq user-mail-address "mail address")

で指定できます.ただし,

 
(setq add-log-full-name "name")
(setq add-log-mailing-address "mail address")

があると,そちらが有効になります.

時間のフォーマット指定方法などは add-log.el に書いてあります.

最後に,お勧めサイト.横着プログ ラミング Unix のメモ技術. Changelog でメモをとる方法について書かれてます. ChangeLog メモを試 してみよう も参考になります.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.4 変更箇所とカーソル位置 (2008/09/20)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=last%20change"
"MeadowMemo/変更箇所とカーソル位置"へのコメント(無し)

ファイルを変更すると,直前に変更した場所に移動したいなんてこともあるもんです.そ んな時に便利なものを紹介します.

44.4.1 変更箇所へ移動 ― goto-chg (2008/09/20)   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

44.4.1 変更箇所へ移動 ― goto-chg (2008/09/20)

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=goto-chg"
"MeadowMemo/変更箇所へ移動―goto-chg"へのコメント(無し)
要約

ファイルを開いてから変更を行った時に,変更した箇所へカーソルを移動できる.

何が問題なのか?

テキストを編集していると,ちょっと前に変更した場所にカーソルを移動したい時があり ます.しかし,単語で検索をして探すのも面倒なものです.

何ができるのか?

変更した箇所にカーソルを簡単に移動できます.

設定済みMeadowでは

設定していませんので,インストールなどが必要です.

インストール方法

goto-chg.el からダウン ロードしてロードパスの通ったところへ置きます.

設定方法

以下を .emacs に追加します

 
(require 'goto-chg)

(global-set-key [(control ?.)] 'goto-last-change)
(global-set-key [(control ?,)] 'goto-last-change-reverse)

キーバインドは環境に合わせて変更ください.設定済み Meadow では,このキーバインド では,別機能にぶつかります.

詳しい使い方

ファイルを開いて変更していきます.で,M-x goto-last-change か設定したキー バインドで 1 個前の変更箇所に移動できます.何度も実行すると,さらに戻っていくこと ができます.

M-x goto-last-change-reverse で,逆方向に戻っていきます.


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]