�u����TortoiseHg�{Mercurial�v�������i�ڍׂ��u���M���v�Q�Ɓj


Emacs ����̗��p

�{�y�[�W�ł́A Emacs �p�� Mercurial �A�g�t�����g�G���h�Ƃ��Ē񋟂���� hg ���[�h (mercurial.el)����� mq ���[�h�imq.el�j �Ɋւ�������܂Ƃ߂Ă݂܂����B

���l: �{�y�[�W�ɋL�ڂ���Ă���R�[�h�͉䗬�ɂ����̂ł��̂ŁA Emacs lisp �E�G�ɂ�����A����ʓI�Ȏ������@�Ɋւ��āA �����m�̕��͌䋳������ƍK���ł��B

�Ȃ��Ahg ���[�h�ł� Emacs 21.x �ȍ~�ŐV�݂��ꂽ�֐������p����Ă��邽�߁A ���ۂɗ��p����‹��� emacs-major-version �ϐ��l���m�F������ŗ��p���Ă��������B �܂��A�����g�� 21.4 �‹��ł̓���m�F�����s���Ă��܂���B

elisp �t�@�C���̓ǂݍ���

Emacs �p�t�����g�G���h�� elisp �t�@�C����:

Windows �o�C�i����:
�C���X�g�[����� "Contrib" �z��
Linux �n�o�C�i����:
"/usr/share/doc/mercurial-��/contrib" �z��
Cygwin �� setup.exe �o�R�ł̓���:
elisp �t�@�C���͊܂܂�Ă��܂���̂ŁA�ʓr���肪�K�v�ł��B
�\�[�X��:
�\�[�X�c���[�� "contrib" �z��

�Ɋi�[����Ă��܂��̂ŁA Emacs �N�����ɂ����ǂݍ��ސݒ���s���܂��B

elisp �t�@�C���̊i�[�ꏊ�� LOCATION �ƕ\�L�����ꍇ�̓ǂݍ��ݐݒ�́A �ȉ��̂悤�ɂȂ�܂��B

(push "LOCATION" load-path)
(load-library "mercurial")
(load-library "mq") ;; MQ(Mercurial Queue) �� patch �Ǘ�������ꍇ
�t�����g�G���h elisp �t�@�C���̓ǂݍ���

�Ȃ��A ���O���b�Z�[�W��t�@�C�����ɓ��{����g�p����ꍇ�ɂ� �u�����R�[�h�v�A ���ɁuEmacs �� hg ���[�h���p�ɂ����闯�ӓ_�v ���Q�Ƃ��Ă��������B

hg ���[�h

"hg-help-overview" ("C-c h h") �ŕ\�������L�[�}�b�v�ꗗ�ɂ́A �������@�\��񋓂���Ă��Ȃ��@�\������܂��B

0.9.5 �łɓ�������� mercurial.el �ŗ��p�”\�ȋ@�\���ȉ��ɂ܂Ƃ߂܂����B

hg �R�}���h �Ώ� �L�[ lisp �֐� C-u �w��
add �t�@�C�� C-c h a hg-add �t�@�C��
cat �t�@�C�� C-x v ~ hg-version-other-window ���r�W����
commit ���|�W�g�� C-c h c hg-commit-start ---
�t�@�C�� C-x v n
diff ���|�W�g�� C-c h = hg-diff-repo �t�@�C���A���r�W����(-r)
�t�@�C�� C-x v = hg-diff
incoming ���|�W�g�� C-c h , hg-incoming �Ώۃ��|�W�g��
log ���|�W�g�� C-c h l hg-log-repo �t�@�C���A �Ώ۔͈�(-r)�A ���(-l)
�t�@�C�� C-x v l hg-log
outgoing ���|�W�g�� C-c h . hg-outgoing �Ώۃ��|�W�g��
pull ���|�W�g�� C-c h < hg-pull �Ώۃ��|�W�g��
push ���|�W�g�� C-c h > hg-push �Ώۃ��|�W�g��
revert �t�@�C�� C-x v u hg-revert-buffer ----
status ���|�W�g�� C-c h s hg-status �t�@�C��

�uC-u �w��v���ɋL�q����Ă���̂́A Emacs �ł̓��Y�@�\���s�̃L�[���͂ɐ旧���� C-u ����͂����ꍇ�ɁA �w��”\�ƂȂ�lj��p�����[�^�ł��B

�L�[�o�C���h�́A ���|�W�g����ΏۂƂ���@�\�� "C-c h"�i"h" �� "hg" �R���j �Ŏn�܂�A �t�@�C����ΏۂƂ���@�\�� VC ���[�h�Ɠ��l�� "C-x v" �Ŏn�܂�̂���{�ł��B �A���A�u�t�@�C���̍\���Ǘ��ւ̒lj��v�Ɋւ��ẮA ���[�U�̊��o�Ƃ��Ă̓t�@�C����ΏۂƂ�������ł����A "C-c h" �Ŏn�܂�L�[���͂ƂȂ�܂��B

�����|�W�g���A�g

�����|�W�g������̎�荞�݁ihg-pull�j �͓��̓��_�C���N�g�i"<"�j�A �����|�W�g���ւ̔��f�ihg-push�j �͏o�̓��_�C���N�g�i">"�j �ɗR������L�[�o�C���h�ɂȂ��Ă��܂��B

�܂��A ��荞�ݓ��e�̎��O�m�F�ihg-incoming�j �� "<" �L�[�� Shift �񉟉��ł���J���}�i","�j�A ���f���e�̎��O�m�F�ihg-outgoing�j �� ">" �L�[�� Shift �񉟉��ł���s���I�h�i"."�j �ɑΉ������L�[�o�C���h�ɂȂ��Ă��܂��B�B

�����̊֌W�𗝉����Ă����΁A �L�[�o�C���h���v���o�����������ɂȂ�ł��傤�B

commit

�R�~�b�g���O���͉�ʂł́A �ȉ��̋@�\���g�p�”\�ł��B

�@�\ �L�[ lisp �֐�
�R�~�b�g�̎��s C-c C-c hg-commit-finish
�R�~�b�g�̒��f C-c C-k hg-commit-kill
���|�W�g���S�̂̕ύX���e�\�� C-x v = hg-diff-repo

�R�~�b�g���O���͉�ʂɂ́A �R�~�b�g�ΏۂƐ��蓾��t�@�C�����񋓂���܂��B

�񋓂��ꂽ�t�@�C���� �i"M" �� "A" �Ƃ�������ԃ}�[�N��ł͋@�\���Ȃ��̂Œ��Ӂj �̏�� SPACE �� ENTER ���������ƂŁA �R�~�b�g�Ώۉ��̐؂�ւ����s�����Ƃ��ł��܂��B �����\���̗L�����A�R�~�b�g�Ώۉ��̗L���ɑ������܂��B

diff

"hg-diff-repo"�i"C-c h ="�j �Ȃ��� "hg-diff"�i"C-x v =") �ɂ�鍷���\����ʂł́A ENTER ���͂ɂ��Y�������ӏ��ւ̃W�����v �i"diff-goto-source"�j�ɑ�\����� diff ���[�h�̋@�\���g�p�”\�ł� (diff ���[�h�̃o�[�W�����ɂ���Ă� "C-c C-c" �ɂ̂݃L�[�o�C���h����Ă���ꍇ������܂�)�B

revert

elisp ��� "hg-forget" �@�\����`����Ă��܂����A ���� "hg forget" �� "hg revert" �ɓ�������Ă��܂��̂ŁA Emacs �o�R�ł̎g�p�ɂ����Ă� "hg-revert" ���g�p���Ă��������B

mq ���[�h

�ȉ��� Mercurial Queue(MQ) �A�g�� Emacs �o�R�ʼn”\�ł��B

hg �R�}���h �L�[ lisp �֐� C-u �w��
qdiff C-c m = mq-diff git �݊�
qnew C-c m i mq-new ----
qnext C-c m n mq-next ----
qpop C-c m , mq-pop �p�b�`��
qpop -a C-c m < mq-pop-all ----
qprev C-c m p mq-previous ----
qpush C-c m . mq-push �p�b�`��
qpush -a C-c m > mq-push-all ----
qrefresh C-c m r mq-refresh git �݊�
qrefresh -m C-c m e mq-refresh-edit ----
qseries C-c m s mq-edit-series ----
mqrefresh -e C-c m o mq-signoff ----
qtop C-c m t mq-top ----

�g���u���V���[�e�B���O

Emacs �o�R�� Mercurial �A�g�ɂ����āA �悭������Ƃ��̉����̂����‚���񋓂��܂��B

���[�h�s�� "Hg:" ���\������Ȃ�

Mercurial �Ǘ����ɂ���t�@�C�����J�����ہA ���[�h�s�̃��[�h�\�������ɂ͈ȉ��̂悤�ȕ\�������邱�Ƃ��ł��܂��B

filename    (Fundamental  Hg:rev)
Mercurial �Ǘ����t�@�C���̃��[�h�s

"filename" ����� "Fundamental" �����͓ǂݍ��񂾃t�@�C���ɉ����āA �܂� "rev" �����͍�Ɨ̈�̐e�`�F���W�Z�b�g�ɉ����ĕω����܂����A �d�v�Ȃ̂� "Hg:" �����̕\���̗L���ł��B

Mercurial �Ǘ����ɂ���t�@�C�����J�����ۂɁA ���� "Hg:" ���\������Ȃ��ꍇ�́A �ȉ��̂悤�Ȗ�肪�l�����܂��B

���� Mercurial �Ǘ����ɖ���:

Emacs �o�R�ȊO����i���g���āA ���Y�t�@�C���� Mercurial �ŊǗ�����Ă��邩�ۂ����m�F���Ă��������B

elisp �t�@�C�����������ǂݍ��߂Ă��Ȃ�:

"hg-mode" �֐��̐�����\�������Ă݂Ă��������B �������\������Ȃ��悤�Ȃ� elisp �t�@�C���̓ǂݍ��݂Ɏ��s���Ă��܂��B

*Messages* �o�b�t�@�����Q�Ƃ��āA �����������Ă��������B

hg �R�}���h�̋N���Ɏ��s���Ă���:

���߁u�R�}���h�N���Ɏ��s����v���Q�Ƃ��Ă��������B

hg �R�}���h�N���Ɏ��s����

Emacs ���ȉ��̂悤�ȃ��b�Z�[�W��\������̂́A hg �R�}���h�̋N���Ɏ��s���Ă��邽�߂ł��B

"Searching for program: no such file or directory, ...":

hg �R�}���h�����‚���Ȃ��ꍇ�ł��B

"hg-binary" �ϐ��̒l�����҂���l�ɂȂ��Ă��邩���m�F���Ă��������B ���҂���l�ɂȂ��Ă��Ȃ��̂́A Emacs �N����� Mercurial �̃C���X�g�[�����ύX�A �Ƃ��������Ƃ������Ǝv���܂��B

"Spawning child process: exec format error":

�N�����悤�Ƃ��Ă��� hg �R�}���h�� Python �X�N���v�g�ł��邽�߁A Windows �‹����ɂ����� Emacs �v���Z�X���� hg �R�}���h�����s�ł��Ȃ��ꍇ�ł��B

�u�X�N���v�g�N���p�⏕�v���O�����̃C���X�g�[���v ���Q�Ƃ��Ă��������B

�����|�W�g���Ƃ̘A�g�ʼn������Ȃ��Ȃ�

���[�J�����|�W�g���Ƃ̘A�g�ie.g.: add/diff/log/commit ���j�͐���ɋ@�\���Ă������ŁA ssh �o�R�ł̑����|�W�g���Ƃ̘A�g�ie.g.: push/pull ���j�ɂ����ĉ����������Ȃ�ꍇ�́A �ȉ��̂悤�Ȍ������l�����܂��B

�z�X�g�����J���̎󂯓���Ńu���b�N����Ă���:

���Y�z�X�g�ւ� ssh ����A�N�Z�X���ɂ́A �z�X�g�����J���̎󂯓��� �i"~/.ssh/known_hosts" �t�@�C���ւ̒lj��j ����̊m�F���K�v�ł��B

�V���ȃz�X�g�ɐڑ�����ꍇ�́A Emacs ���o�R���Ȃ� ssh ���p�œ��Y�z�X�g�ɃA�N�Z�X���邱�ƂŁA �z�X�g�����J���̎󂯓�����ς܂��Ă����K�v���L��܂��B

�p�X�t���[�Y���͂Ńu���b�N����Ă���:

ssh-agent �A�g���@�\���Ă��Ȃ� �i���邢�� ssh-agent ���̂��̂𗘗p���Ă��Ȃ��j�ꍇ�A ssh �̓p�X�t���[�Y�����͂����܂ő҂������܂��B

�܂��� Emacs ���o�R���Ȃ� ssh ���p���A �p�X�t���[�Y���͂�v�����Ȃ����Ƃ��m�F���Ă��������B

����ł� Emacs �o�R�ł̑����|�W�g���A�g���@�\���Ȃ��ꍇ�́A ssh-agent �ɂ�� "SSH_AUTH_SOCK" �‹��ϐ����ݒ肳���O�� Emacs ���N�����ꂽ���߂ɁA Emacs ���� fork ���ꂽ ssh �� ssh-agent �ƘA�g�ł��Ă��Ȃ����Ƃ������ł��B �K�X Emacs ���ċN�����Ă��������B

�p�X���[�h�F�؂Ńu���b�N����Ă���:

���Y�z�X�g�Ƃ� ssh �A�g���p�X���[�h�F�؂ōs����ꍇ�A ssh-agent �͋@�\���܂���B

���̏ꍇ�Assh �ɂ�郊���[�g���|�W�g���Ƃ̘A�g�� Emacs �o�R�Ŏ��{���邱�Ƃ͂ł��܂���B

���Ȃ݂ɁA tty ����”ۂ̊֌W��A Emacs ��ʼnғ����Ă���V�F������� ssh ���p���������� �i��”\��������j�܂��̂ŁA �uEmacs ���o�R���Ȃ� ssh ���p�v�ɂ����ẮA Emacs �� shell ���[�h���g��Ȃ��悤�ɒ��ӂ��Ă��������B

SPACE/ENTER �ɂ��@�\�N�����s���Ȃ�

�u�R�~�b�g���O���͉�ʂŃt�@�C���̑I�����ł��Ȃ��v�A �u�����\����ʂŊY���s�ɃW�����v�ł��Ȃ��v �Ƃ�������肪����ꍇ�A �ȉ��̂悤�Ȍ������l�����܂��B

�����\�����s�����Ƃ��ł��Ȃ�:

�@�\��͖��Ȃ��Ă��A �t�H���g���s���iGUI �N�����j���Ă����� �F�ݒ蓙�̖��iCUI �N�����j����A �����\�����ł��Ȃ����߂ɁA �ꌩ����ƃt�@�C���̑I�����ł��Ȃ��悤�Ɍ����邱�Ƃ�����܂��B

���̏ꍇ�̓t�H���g�ݒ�i�ꍇ�ɂ���Ă̓t�H���g�̃C���X�g�[���j ��F�ݒ�̌��������K�v�ł��B

���̊g���@�\�Ƃ̋���:

�g���@�\�̒��ɂ́A (Mercurial �A�g�Ɍ��炸) diff ���[�h���Ƒ�������낵���Ȃ����̂�����܂��B

���̏ꍇ�͊e���́u�D�݁v�ɉ����āA �g���@�\�̎�̑I�����K�v�ɂȂ�ł��傤�B

���{��̃��O���b�Z�[�W�E�t�@�C�����������������Ȃ�

�uEmacs �� hg ���[�h���p�ɂ����闯�ӓ_�v���Q�Ƃ��Ă��������B


���߁uTortoiseHg ����̗��p�v��