[ Top�y�[�W�֖߂� ]

Subversion�Ńo�[�W�����Ǘ�

2003.6.23����A�N�Z�X


�T�v

Subversion�́ACVS(Concurrent Versions System)�����ǂ����o�[�W�����Ǘ��c�[���ł��B�g�������CVS�ɔ��ɂ悭���Ă��܂��B

��ȉ��Ǔ_

�R�}���h

    svn, svnlook, svnadmin, mod_dav_svn, svnserve, svnversion

���|�W�g���ւ̃A�N�Z�X���@

��ƃR�s�[�������Ă���ɂ�

    $ svn checkout http://svn.example.com/repos/hello
    A hello
    A hello/build.xml
    A hello/Hello.java
    $ ls -a hello
    build.xml  Hello.java  .svn/
    $
�v���W�F�N�g�f�B���N�g���̉���trunk/tags/branches��݂��Ă���ꍇ
$ svn checkout http://svn.example.com/repos/hello/trunk hello
:

trunk�Ƃ����f�B���N�g�������������̂͂��܂����Ȃ̂ŁA���|�W�g�����trunk���ɂ���t�@�C���E�f�B���N�g������ƃf�B���N�g����hello�f�B���N�g���̉��Ƀ`�F�b�N�A�E�g���܂�

�ύX���e�����|�W�g���ɓo�^����ɂ�

    $ svn commit Hello.java

��ƃR�s�[���ŐV�ɍX�V����ɂ�

    $ svn update
    U Hello.java

�L���̈Ӗ��͈ȉ��̕\�̂Ƃ���ł��B

�L�� ���e
U �t�@�C�������|�W�g���̍ŐV�łɍX�V���ꂽ
A �t�@�C�����V�K�lj����ꂽ
D �t�@�C�����폜���ꂽ
R �t�@�C�����u��������ꂽ�i�������O����������͕ʕ��j
G ���[�J���̏C���ƃ��|�W�g���̍X�V���}�[�W���ꂽ
C ���[�J���̏C���ƃ��|�W�g���̍X�V���������Ă���

��������������ƁA�����‚��̃t�@�C������������܂��BaFile�̏ꍇ�A��������������ƁA�ȉ��̃t�@�C������������܂��B

aFile
�R���t���N�g�������������ɂ��̏󋵂��}�����ꂽ�t�@�C��
aFile.mine
��ƃR�s�[��update����O�̃t�@�C���́A����Ƀ��l�[�������
aFile.rXXXX�@�iXXXX��update�O�̍�ƃt�@�C���̃`�F�b�N�A�E�g���ꂽ���̓��e�j
update�O�̍�ƃR�s�[���R�t������Ă��郊�|�W�g���̓��e
aFile.rXXXX�@�iXXXX��update��̃��|�W�g���̓��e�j
update�ɂ���čŐV�ƂȂ郊�|�W�g���̓��e

��ƃR�s�[�̃t�@�C����f�B���N�g����V���Ƀ��|�W�g���ɓo�^����ɂ�

    $ svn add Greeting.java
    A    Greeting.java
    $ svn commit Greeting.java

commit�O�Ɏ���������ꍇ�́Asvn revert���g�p���܂��B

��ƃR�s�[�̃t�@�C����f�B���N�g���̏�������ɂ�

    $ svn info Greeting.java

��ƃR�s�[�̃t�@�C����f�B���N�g���̕ύX�󋵂��m�F����ɂ�

    $ svn status
    MM    Greeting.java

���|�W�g���̐V�K�쐬

�o�[�N���CDB

Subversion 1.1�܂ł̃f�t�H���g�̌`���ł������A�ŋ߂ł̓t�@�C���V�X�e���iFSFS�j�ɒu�������A���܂茩�邱�Ƃ͂���܂���B

    $ svnadmin create --fs-type bdb /home/svn_rep
    $ ls /home/svn_rep
    README.txt conf/ dav/  db/  format hooks/  locks/

���|�W�g���́ABerkeley DB���g�p�����ꍇ�ACVS�̂悤�Ƀf�B���N�g��/�t�@�C�������Ō���邱�Ƃ͂���܂���Bhooks/�ɂ́A�Ⴆ�΃R�~�b�g��������ɓ��삷��X�N���v�g�A�Ƃ��������̂��u����܂��Bconf�̉��ɂ́A�����[�g����A�N�Z�X����ۂ̃A�N�Z�X����p�X���[�h�ݒ�Ɋւ�����svnserve.conf������܂��B�����[�g����ڑ�����ꍇ�Asvnserve.conf��K�؂ɋL�q���Ă����܂��B

Berkeley DB���g�p����ꍇ�A���|�W�g���̏ꏊ��NFS��SMB�Ȃǂ̃l�b�g���[�N���L�ɂ��邱�Ƃ͂ł��܂���BBerkley DB�̓f�[�^���������Ƀ}�b�s���O���邽�߁A�t�@�C���𕡐�CPU���狤�L����ƕs�������������܂��B

�t�@�C���V�X�e��

Subversion 1.2����f�t�H���g�ƂȂ��Ă���`���ł��B

    $ svnadmin --fs-type fsfs create /home/svn_rep
    $ ls /home/svn_rep
    README.txt conf/ dav/  db/  format hooks/  locks/

���|�W�g���̃o�b�N�A�b�v

�t���o�b�N�A�b�v
$ svnadmin dump /home/svn_rep > svn_rep_backup_`date +%Y%m%d`
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
    :
$
���X�g�A

�o�b�N�A�b�v�������|�W�g���𕜌����܂��B

$ svnadmin create /home/svn/svn_rep
$ svnadmin load /home/svn/svn_rep < svn_rep_backup_20050401

Berkeley DB�ō�������|�W�g�����t���o�b�N�A�b�v���A���̃t�@�C�����t�@�C���V�X�e���̃��|�W�g���Ƀ��X�g�A(load)���Ă�OK�ł����B

�o�b�N�A�b�v�ɂ́Aconf/subversion.conf�t�@�C���͊܂܂�Ȃ��̂ŁA�ݒ�t�@�C���͎蓮�Ńo�b�N�A�b�v�����K�v������܂��B

���|�W�g���ւ�import

�ȉ��̃f�B���N�g����Subversion�Ǘ����ɒu�������ꍇ
    hello
       +--- build.xml
       +--- src
             +--- Hello.java

���|�W�g����Ajavaproj/hello �ɒu���ꍇ�͎��̃R�}���h�����s

    $ svn import hello file:///home/svn_rep/javaproj

���̂Ƃ��A�‹��ϐ�SVN_EDITOR�ɐݒ肵���G�f�B�^���N������܂��B���O���L�q���ăG�f�B�^���I������ƁAimport���������s����܂��B

���|�W�g����̃f�B���N�g��������ɂ�

    $ svn list file:///home/svn_rep

���|�W�g����ɐV���ȃf�B���N�g�����쐬����ɂ�

    $ svn mkdir file:///home/svn_rep/cxxproj

���|�W�g���ォ��t�@�C���E�f�B���N�g�����폜����ɂ�

    $ svn delete file:///home/svn_rep/cxxproj

���|�W�g����̃t�@�C���𒼐ڕʂȏꏊ�ֈړ�����ɂ�

    $ svn move -m "Log a message" file:///home/svn_rep/cxxproj/a.txt file:///home/svn_rep/cxxproj/sub/a.txt
�܂��́A��ƃR�s�[��ňړ����Ă���R�~�b�g����ɂ�
    $ svn move a.txt sub/a.txt
    A sub/a.txt
    D a.txt
    $ svn commit

���|�W�g����̃f�B���N�g���𒼐ڕʂȏꏊ�ֈړ�����ɂ�

$ svn move 

�L�[���[�h�u��������ɂ�

�ȉ���5�‚̃L�[���[�h���u���”\�ł��B�������f�t�H���g�ł͒u���������ƂȂ��Ă��܂��B

�L�[���[�h ����
LastChangedDate Date
LastChangedRevision Rev
LastChangedBy Author
HeadURL URL
Id
�Ⴆ�΁ALastChangedRevision��L���ɂ���ɂ�
    $ svn propset svn:keywords "LastChangedRevision" Greeting.java
�t�@�C���•ʂɖ���w�肵�Ȃ��Ă��A����p�^�[���̃t�@�C���ɃL�[���[�h�u���������w�肷��

Windows Vista�Ȃ烆�[�U�[�f�B���N�g������\AppData\Roaming\Subversion�f�B���N�g�����ɂ���config�t�@�C����ݒ肵�܂��B

enable-auto-props = yes
*.java = svn:keywords=Id
*.sdoc = svn:keywords=Id

�g���q.java�A.sdoc�̃t�@�C����SVN�Œlj�����ƁA�L�[���[�hId�̒u�����L���ɂȂ�܂��B

�l�b�g���[�N����A�N�Z�X����ɂ�

HTTP(HTTPS)�̏ꍇ

�@WebDAV/deltaV�v���g�R���ŒʐM����iHTTP1.1�̊g���j
�@�K�v�Ȃ��́FApache httpd 2.0�Amod_DAV�ASubversion�Amod_dav_svn

SVN�T�[�o�̏ꍇ

�@svnserve�����s����B�f�t�H���g�|�[�g��3690�Binetd�ɐݒ肷�邩-d�I�v�V�����t���Ńf�[�����v���Z�X�N���B

�@�I�v�V�����Ȃ���svnserve�����s
�@�@�@svn://myhost/usr/local/repos/project �ւ̃A�N�Z�X�́Amyhost���/usr/local/repos/proj�@�ɂ��郊�|�W�g�����Q�ƁB
�@-r�I�v�V�����t����svnserve�����s(��Fsvnserve -r /usr/local�j
�@�@ snv://myhost/repos/proj �ւ̃A�N�Z�X�́Amyhost���/usr/local/repos/proj �ɂ��郊�|�W�g�����Q�ƁB
�@-R�I�v�V�����t���͏������ݕs��

Solaris 10��ł�subversion�ݒ�菇

�l�b�g���[�N����SVN�T�[�o�o�R�ŗ��p����ꍇ�A�e���|�W�g���̃��[�g������conf�f�B���N�g���ɂ���svnserve.conf��K�؂ɋL�q����K�v������܂��B

�����v���W�F�N�g�ƃ��|�W�g��

�@�E�v���W�F�N�g�ԂŃ��|�W�g���̃f�[�^�̋��L�A�ړ����s�����ǂ����H
�@�E�R�~�b�g���̏����A�F�؁A�A�N�Z�X���‚𓯂��ɂ��邩�ǂ����H
�@�𔻒f��ɓ������|�W�g�����g�����ʃ��|�W�g���ɂ��邩���f���܂�

�u�����`

�@Subversion�ł̃u�����`�쐬�́A�P�Ȃ�f�B���N�g���̃R�s�[�ł��B
�@���|�W�g����ɁAtrunk�Abranches�Ƃ����T�u�f�B���N�g����݂���Tips����ʓI�ł��B2�•��@������A�ǂ��Ǝv�������g���΂悢�悤�ł��B

�e�v���W�F�N�g����trunk/branches��݂�����@
repos
   +--- projA
   |       +--- trunk
   |       +--- branches
   +--- projB
   :       +--- trunk
   :       +--- branches
���|�W�g���̃g�b�v��trunk/branches��݂�����@
repos
   +--- trunk
   |       +--- projA
   |       +--- projB
   +--- branches
           +--- projA
           +--- projB
�u�����`�̍쐬

���݂�trunk����u�����`RB-1.0���쐬���܂�

    $ svn copy -m "Creating release branch for 1.0" \
          svn://myhost/repos/trunk svn::/myhost/repos/branches/RB-1.0
��ƃR�s�[��trunk����u�����`�ɐ؂�ւ���

�����葁���̂́A�V���Ƀu�����`���w�肵�ă`�F�b�N�A�E�g������@�ł��B

����trunk���`�F�b�N�A�E�g���č�ƃR�s�[������Ă���A������u�����`RB-1.0�ɐ؂�ւ���ꍇ

�t�b�N�i���������j

�N�������|�W�g���ɃR�~�b�g�����ۂɎ����ł��鏈�������s�������A�Ƃ������ړI�Ńt�b�N�@�\���p�ӂ���Ă��܂��B

�R�~�b�g���ꂽ��A���J�p�f�B���N�g�����X�V����

���|�W�g���̓��e������f�B���N�g���ɓW�J���Ă����A���|�W�g���ɐV�����R�~�b�g���s��ꂽ�炻�̃f�B���N�g�����X�V���鏈�����t�b�N�@�\�Ŏ����Ŏ��s���܂��B

UNIX�ł̎d����

���|�W�g�� file:///home/svn_rep/sample ����сA���J�f�B���N�g���� /share/public/sample �Ƃ��܂��B

/home/svn_rep/sample/hooks �f�B���N�g���ɁA���s���t����post-commit �̖��O�Ŏ��s�”\�ȃt�@�C�����쐬���܂��B

#!/bin/sh
REPOS="$1"
REV="$2"
PUBLICDIR="/share/public/sample"
LOGFILE="/tmp/svn_rep_sample_post_commit.log"
export LANG=ja_JP.UTF-8
cd $PUBLICDIR
svn update >> $LOGFILE 2>&1

/share/public/sample �ɂ��炩���߃��|�W�g�����e���`�F�b�N�A�E�g���A������ׂ��A�N�Z�X����t���Ă����܂��B

~$ cd /share/public/sample
sample$ svn co file:///home/svn_rep/sample
sample$ chown -R svn:svn .
sample$

svnserve�Ń��|�W�g�����X�V����ꍇ�Asvnserve���s���[�U�����ŃA�N�Z�X�”\�ɂ��Ă����܂��B

���O�t�@�C����/var/log�̉��ɍ쐬����Ƃ��A���炩���߃A�N�Z�X����t���Ă����Ȃ��ƃG���[�ɂȂ�̂ŁAroot�Ńt�@�C����touch�ō쐬���A�t�@�C���̃A�N�Z�X����ύX���Ă����܂��B

���{��̃t�@�C�����R�~�b�g���ꂽ�Ƃ��A�‹��ϐ�LANG�Őݒ肪�Ȃ��ƁA�t�@�C�������G���R�[�h�ł����G���[�ƂȂ�܂��B

�R�~�b�g���ꂽ��A���[���Œʒm����

���|�W�g���ɃR�~�b�g���������烁�[���Œʒm���鏈�����t�b�N�@�\�Ŏ������s���܂��B

���|�W�g�����傫���Ƃ��́A���ׂẴR�~�b�g�̒ʒm���󂯂����ςȂ̂ŁA����̃f�B���N�g���ւ̃R�~�b�g��ʒm���邱�Ƃ܂Ŏ�����_���܂��B

UNIX�iCentOS 5�j�ł̎d����

�iCollabNet Subversion server�Łj���|�W�g�����쐬����ƁA���|�W�g���f�B���N�g����hooks�̉��ɁApost-commit.tmpl�Ƃ����t�@�C�����o���Ă��܂��B������Apost-commit�̖��O�ɕύX���A���s����t���܂��B

#!/bin/sh

# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit.  Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the
# following ordered arguments:
#
#   [1] REPOS-PATH   (the path to this repository)
#   [2] REV          (the number of the revision just committed)
  :�i�����j
REPOS="$1"
REV="$2"

mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

�f�t�H���g�ł́Amailer.py�@�X�N���v�g���Ăяo���Ă��܂����A�����Subversion�̃\�[�X�A�[�J�C�u�Ɋ܂܂�Ă���̂ŁACollabNet Subversion�o�C�i����W�J�������ɂ͂���܂���B

�ŁA�T���Ă݂��Ƃ���A���{��΍��������commit-email-jp-CentOS5.pl �Ȃ�X�N���v�g���ȉ��T�C�g�Ō��J����Ă��܂����B

�Ȃ��A���̃X�N���v�g��"-m <���K�\��>"�I�v�V�����ŁA���[���ʒm����Ώۂ̃f�B���N�g���𐳋K�\���Ŏw��ł���̂ł����A�o�O���Ă܂��BSubversion Users ML�ɏЉ��Ă���������Ƃ��Ĉȉ��̏C�������܂��B�������A���̏C��������ƁA�K��-m�I�v�V�����̎w�肪�K�v�ɂȂ�܂��B�i�i�荞�݂��Ȃ��ꍇ�́A-m "." ���w��j

-my @project_settings_list = (&new_project);
+my @project_settings_list = ();

�܂��A�X�N���v�g���Ƀ��[���T�[�o�[���Asvnlook�R�}���h�̃p�X���n�[�h�R�[�h����Ă���̂ŁA�g�p�‹��ɍ��킹�ďC�����܂��B

-$smtp_server = "AAA.BBB.CCC.DDD";
+$smtp_server = "localhost";
-my $svnlook = "/usr/bin/svnlook";
+my $svnlook = "/opt/CollabNet_Subversion/bin/svnlook";

/home/svn_rep/sample �����|�W�g���E���[�g�̃f�B���N�g���Ƃ��āA��L�T�C�g�����肵�� commit-email-jp-CentOS5.pl�����̃f�B���N�g������hooks���ɕۑ����܂��B

~$ pwd
/home/svn_rep
~$ cd sample/hooks
hooks$ cp /tmp/commit-email-jp-CentOS5.pl .
hooks$ 

���ɁAhooks�̒���post-commit�����܂��B�܂�����Ă��Ȃ���΁Apost-commit.tmpl�𖼑O��ς��Ď��s����t���܂��B

hooks$ cp post-commit.tmpl post-commit
hooks$ chmod +x post-commit
hooks$ 

post-commit��ҏW���܂��Bcommit-email-jp-CentOS5.pl�ւ̌Ăяo����NjL���܂��B

/usr/bin/perl /home/svn_rep/sample/hooks/commit-email-jp-CentOS5.pl 
 "$REPOS" "$REV" -m "." --from [email protected] -s '[Commit:sample]'
 [email protected]
���L�F���s�Ȃ��ɋL�q���܂��B
-s �I�v�V�����͒ʒm���[���̑薼�ɐړ����Ƃ��ĕt��������ł��B�ʒm�惁�[���A�h���X�͕����񋓉”\�ł��B

���l
�@���{��̃f�B���N�g������-m�I�v�V�����̐��K�\���ł̓}�b�`���Ȃ��悤�ł��B

Tips

Cygwin�֘A

Cygwin�̏ꍇ�A�‹��ϐ�TERM ��cygwin���Z�b�g����Ă��܂����A���̏ꍇvi�����܂��N�����ꂸ�A�ȉ��̂悤�ȃG���[�ƂȂ�܂��BTERM=vt100�̂悤�ɓK�؂Ȓl���Z�b�g���܂��B

vi: cygwin: unknown terminal type
svn: system('vi svn-commit.tmp') returned 1

bash�ō�ƃR�s�[�𑀍삷��ہA�f�B���N�g���⊮������Ƃ��ɁA.svn���e�f�B���N�g���ɂł��邽�߁A������Ɩʓ|�ł��B�V�F���ϐ�FIGNORE��.svn��o�^���Ă���ƁAbash�ł̕⊮��.svn���ΏۊO�ƂȂ邽�ߑ��삪�y�ɂȂ�܂��B

���|�W�g���̈ړ�

�ʃz�X�g�Ƀ��|�W�g�����ړ������ꍇ�Ń��[�N�X�y�[�X�͂��̂܂܌p���g�p������

�{���͐V�����T�[�o����ă`�F�b�N�A�E�g���K�v�ł����A��ƒ��̃��[�N�X�y�[�X���ǂ����Ă��ێ��������ꍇ�A�e�f�B���N�g���ɐ��������.svn�f�B���N�g���̒��ɂ���entries�t�@�C���̏����C�����邱�Ƃł��܂������Ƃ��o�������ł��B

.svn/entries
<?xml version="1.0" encoding="utf-8"?>
<wc-entries xmlns="svn:">
<entry committed-rev="88"
  name=""
  committed-date="2006-01-23T12:34:56.789012Z"
  url="svn://oldhost/myrep/trunk"
  last-author="torutk"
  kind="dir"
  uuid="xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx"
  revision="88"/>
<entry name="alpha" kind="dir"/>
<entry name="beta" kind="dir"/>
</ec-entries>

url�̕�����ύX����΁A�V�����z�X�g�ɑΉ��ł������ł��B

#!/bin/bash -f

for e in $( find . -name "entries" ); do
        echo $e;
        cp $e $e.oldhost;
        sed -e 's/oldhost/newhost/g' $e.oldhost > $e;
done

�ΏۊO�̃t�@�C���E�f�B���N�g��

����̃t�@�C����f�B���N�g�����A�o�[�W�����Ǘ��ΏۊO�Ƃ������ꍇ�̐ݒ��i�́A�ӊO�ƌ����Ă��܂��B

�v���p�e�B svn:ignore

�����o�[�W�����Ǘ����ɒu����Ă��Ȃ��t�@�C������уf�B���N�g�����Asvn status, svn add, svn import�R�}���h�̑Ώۂ��珜�O���܂��B

�t�Ɍ����΁A���Ƀo�[�W�����Ǘ����ɓ����Ă��܂����t�@�C����f�B���N�g���𖳎�����ݒ�͂ł��܂���B�܂��Aadd�͂ł��Ă��܂��܂��B

�����̊m�F

�o�[�W�����Ǘ��c�[���̐^�����͍������̎擾�ł��B��������������񂪕ۊǂ���Ă��Ă��A�����������o���L�����p���Ȃ���ΒP�Ȃ�t�@�C�����L�ł��B

�X�V���ꂽ�t�@�C���ꗗ�����X�g�A�b�v����

�R�}���h���C��

��ƃR�s�[�̏��

$ svn diff | awk '/^Index/ {print $NF}' 
include/Sample.h src/Sample.cpp src/main.cpp $

�Ƃ���ƁA�x�[�X���r�W�����ƍ�ƃR�s�[�Ƃ̔�r�ŕύX�̂������t�@�C�������X�g�A�b�v���܂��B

����̃��r�W�����i��F123�j�ƍ�ƃR�s�[�Ƃ̔�r�́Asvn diff -r 123 �ƁA�����2�‚̃��r�W�����ԁi��F100��123�j�̔�r�́Asvn diff -r 100:123 ��-r�I�v�V�����Ŏw�肵�܂��B

��ƃR�s�[���Ȃ���ԂŁA���|�W�g���̓����2�‚̃��r�W�����Ԃ̔�r�i��F100��123�j�̔�r�́A���|�W�g��URL��@�ƃ��r�W�����ԍ����w�肵�čs���܂��B

$ svn diff http://remote.example.com/repo/trunk/Hoge@100 http://remote.example.com/repo/trunk/Hoge@123
   :

�܂��́A���|�W�g��������ł����

$ svn diff -r 100:123 http://remote.example.com/repo/trunk/Hoge
   :

�󔒂̐��A���s�݂̂̕ύX�͍����\�����Ȃ�

svn�̃T�u�R�}���hdiff�̃I�v�V����-x�ɑ����Ďw�肷��I�v�V�����ŁA�󔒂���s�R�[�h�̈Ⴂ�𖳎�����E���Ȃ��̐��䂪�”\�ł��B

�󔒕����̐�������Ă������Ƃ��ĕ\�����Ȃ��ꍇ�A

$ svn diff -x -b Hello.cpp

�󔒕�����������r�Ŗ�������ꍇ

$ svn diff -x -w Hello.cpp

���s�R�[�h�̈Ⴂ��������r�Ŗ�������ꍇ

$ svn diff -x --ignore-eol-stype Hello.cpp

��L�������w�肷��ꍇ�A-x�͂P�‚�����Ƀp�����[�^���w��ł���̂ŁA

$ svn diff -x "-b --ignore-eol-stype" Hello.cpp

��-x�̂��Ƃ�""�ň͂�ŕ����I�v�V�������w�肵�܂��B

�قȂ�ꏊ�ō�Ƃ������ʂ𓝍�

�@�����̉�Ђŋ����J������\�t�g�E�F�A�̏ꍇ�ŁA���ꂼ��̉�Ђ̊J���ꏊ����Subversion�T�[�o�����L�ł���΂����̂ł����A���X�ɂ��ċ��L�ł��Ȃ����Ƃ�����܂��B�e��Ђ�Subversion�T�[�o�𗧂āA�S������T�u�V�X�e���������ŊJ�����A������x�̒i�K�őS�V�X�e���𓝍�����J���ꏊ�Ɏ����Ă���Ƃ����V�i���I�ɂȂ�܂��B

����Ă͂����Ȃ���Ǝ菇

�@���̂悤�ȏꍇ�A����Ă͂����Ȃ���Ƃ͎��̗���ł��B

�@���̏ꍇ�A�o�[�W�����Ǘ��̋ւ���ł���A�t�@�C���R�s�[���������Ă��܂��B�l��������́A

�Ȃǂ��������܂��B����ł̓o�[�W�����Ǘ��ȑO�ɋt�߂�ł��B�W�����|�W�g�������ł���Subversion���A�n���I�ɕ��U���Ă��邽�߂ɖ�����蕪�U���|�W�g���̂悤�Ȏg���������Ă��邽�߂ɐ����Ă��܂��B

���ׂ���Ǝ菇�̈�

���������������̂ЂƂ‚ɁA�u�����`�̊��p���l�����܂��B

�Ȃ��A�Ō�̃}�[�W��Ƃ́A�������|�W�g���̍\���Ǘ��S���҂�����ׂ��ł��B

���

���ЁE�G���L��

Web

���[�����O���X�g

�C���X�g�[������

Windows

�ǂ�Subversion�����悤���i2010.12.12�����j

Windows�p��Subversion�\�t�g��T���ƁA�����_�ł́A�ȉ��̃\�t�g�����‚���܂��B

�R�}���h���C����
GUI�Łi�N���C�A���g�@�\�̂ݎg����΂悢�Ȃ�j

Solaris

Solaris 10 Subversion�ݒ���

CentOS

CentOS 5�ւ̃C���X�g�[��

CentOS 5�ł́ASubversion 1.4.2���W�����ڂ���Ă��܂��B

Subversion 1.5��CentOS 5�փC���X�g�[�����郁���͂�����ł��B

CollabNet Subversion 1.6��CentOS �T�փC���X�g�[�����郁���͂�����ł��B

CentOS 4.4�ւ̃C���X�g�[��

CentOS 4.4�ɃC���X�g�[�������ۂ̃����ł��B

CentOS�ł́A�p�b�P�[�W�Ǘ���yum���g�p���܂��B

# yum install subversion
  :
#

�������A2007�N1��8������Subversion��1.4.2���ŐV�łŁA1.2���܂߂Ă�����Â��ł̓T�|�[�g�O�ƂȂ��Ă���󋵂ɂ�������炸�Ayum�ŃC���X�g�[�������Subversion��1.1.4�ƂȂ��Ă��܂��B�����ŁARPM�`���̃o�C�i���p�b�P�[�W���_�E�����[�h���ăC���X�g�[�����܂��B

Subversion�̖{�ƃT�C�g����"Downloads"�̃����N��H����Binary Packages��"Red Hat 8.0, 9, Red Hat Enterprise Linux 3, 4"�̍��ɂ���"UK Mirror"�܂���"summersoft.fay.ar.us"�̃����N��H��܂��Brhel-4/i386�̃f�B���N�g������rpm�p�b�P�[�W������܂��B

�ȉ���rpm�p�b�P�[�W�t�@�C�����_�E�����[�h���܂��B

CentOS 4.4�ɂ́Aapr�����apr-util�p�b�P�[�W���C���X�g�[������Ă��܂����A�o�[�W���������ꂼ��0.9.4-24.5.c4.2�����0.9.4-21�ƂȂ��Ă��܂��Bsubversion-1.4.0-1���v������apr�����apr-util�̃o�[�W������0.9.7�����0.9.7�Ȃ̂ŏ����ɍ����܂���B�����ŁA���apr��apr-util�̗��p�b�P�[�W���A�b�v�O���[�h���܂��B
rpm�R�}���h�̃A�b�v�O���[�h��-U�I�v�V�������w�肵�܂��B

# rpm -Uvh apr-0.9.12-1.i386.rpm apr-util-0.9.12-1.i386.rpm
  :
#

�C���X�g�[�����m�F����ɂ́Arpm�R�}���h��-q�I�v�V�������w�肵�܂��B

# rpm -q apr
apr-0.9.12-1
# rpm -q apr-util
apr-util-0.9.12-1
#

���ɁAsubversion��rpm�R�}���h���g���ăC���X�g�[�����܂��B�C���X�g�[������-i�I�v�V�������w�肵�܂��B-vh�I�v�V������lj�����ƁA�ڍ׏��̕\���Ɛi���\����rpm�R�}���h���s���܂��B

# rpm -ivh subversion-1.4.0-1.i386.rpm
  :
#

�����Subversion�̊�{�@�\�����p�ł���悤�ɂȂ�܂��B

inet�o�R��svnserve���N��

svnserve��inet�o�R�ŋN������ݒ���s���܂��B

/etc/services ��svnserve�̃T�[�r�X���E�|�[�g�ԍ��o�^�����܂����A���ɋL�q�ς݂ł����B

svn       3690/tcp            # Subversion
svn       3690/udp            # Subversion

/etc/xinetd.d/svn �t�@�C�����쐬���܂��B

service svn
{
    disable = no
    socket_type = stream
    protocol = tcp
    wait = no
    user = apache
    server = /usr/bin/svnserve
    server_args = -i -r /home/svn/repos
}
user=�Ŏw�肵�����[�U������svnserve���t�@�C����ǂݏ�������̂ŁA���|�W�g���Ɏw�肵���f�B���N�g���ȉ��͎w�肵�����[�U�����Ńt�@�C���̓ǂݏ������ł���悤�Ƀp�[�~�b�V������ݒ肵�Ă����K�v������܂��B
# cd /home/svn
# chown -R apache repos

svn��o�^

# /sbin/chkconfig --add svn
# /sbin/chkconfig --list | grep svn
    svn:  on
#

xinetd���ċN��

# /etc/rc.d/init.d/xinetd restart
xinetd ���~��:                        [  OK  ]
xinetd ���N����:                        [  OK  ]
#

GUI��

Linux�Ŏg����GUI��Subversion�c�[��

�O��diff/merge�c�[���ɂ́A

�O��diff/merge�c�[���̐ݒ�imeld�j

svn diff�Ȃǂ̃R�}���h�͒ʏ�CUI���diff�c�[���̏o�͌��ʂ��e�L�X�g�\�����܂��B�������AWindows�‹��ł�GUI�ɂ�鎋�o�I��diff�c�[���iWinMerge�Ȃǁj�Ɋ���Ă��܂��ƁA����ς�s�ւ������܂��B�����ŁAsvn�R�}���h�����r���ʂ��O���c�[���ɏo���悤�ɐݒ���s���܂��B

���[�U���ɐݒ肷��ꍇ�A~/.subversion/config�t�@�C���ɊO��diff�c�[���̐ݒ���L�q���܂��B�������A�c�[���ɂ���ăR�}���h���C�������̎w�肪�قȂ�̂ŁA�ʏ��svn�R�}���h����V�F���X�N���v�g���Ăяo���A�V�F���X�N���v�g���ɃR�}���h���C���������g�p����O���c�[���ɍ��킹�Ēu��������L�q���s���܂��B

~/.subversion/config�t�@�C����ҏW

[helpers]
diff-cmd = /home/torutk/bin/svn-diff-meld
diff3-cmd = /home/torutk/bin/svn-diff3-meld
diff3-has-program-arg = false

~/bin/svn-diff-meld�t�@�C�����쐬

#!/bin/sh
# SVN diff wrapper for meld
left="$6"
right="$7"
meld "$left" "$right"

~/bin/svn-diff3-meld�t�@�C�����쐬

#!/bin/sh
# SVN diff3 wrapper for meld
mine="$9"
older="$10"
yours="$11"
meld "$mine" "$older" "$yours"