FreeBSD Daily Topics

2013年6月28日 FreeBSD 10-CURRENT,svn(1)コマンドをユーザランドへマージ

この記事を読むのに必要な時間:およそ 3 分

src

svnlite(1) merged to 10-CURRENT

FreeBSD 10-CURRENTへSubversion(svnlite)のマージが実施されましたsvn commit: r251886)。r251886以降の10-CURRENTでは次のようにsvnlite(1)およびそれに関連するコマンドがインストールされます。

# uname -a
FreeBSD parancell-freebsd-head.ongs.co.jp 10.0-CURRENT FreeBSD 10.0-CURRENT #3 r247912: Thu Mar  7 21:00:19 JST 2013     root@parancell-freebsd-head.ongs.co.jp:/usr/obj/usr/src/sys/VIRT  amd64
# ls /usr/bin/ | grep svn
svnlite
svnliteadmin
svnlitedumpfilter
svnlitelook
svnlitemucc
svnliterdump
svnliteserve
svnlitesync
svnliteversion
#

マージされたsvnlite(1)はSubversion 1.8.0に相当するバージョンです。PythonやPerlのプラグイン機能を持っていないほか,APIのサポートも抜かれています。FreeBSDのソースコードやPorts CollectionなどはSubversionで管理されていますので,Ports Collectionからインストールしないでも利用できるようになります。

# svnlite help
usage: svn <subcommand> [options] [args]
Subversion command-line client, version 1.8.0.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules
  or 'svn --version --quiet' to see just the version number.

Most subcommands take file and/or directory arguments, recursing
on the directories.  If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.

Available subcommands:
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   patch
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   relocate
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)
   upgrade

Subversion is a tool for version control.
For additional information, see http://subversion.apache.org/
#

ソースコードは/usr/src/usr.bin/svn/と/usr/src/contrib/subversion/にまとまっています。本体は/usr/src/contrib/subversion/です。

# find /usr/src/usr.bin/svn/ | wc -l
      68
# find /usr/src/usr.bin/svn/ | head
/usr/src/usr.bin/svn/
/usr/src/usr.bin/svn/svnlook
/usr/src/usr.bin/svn/svnlook/Makefile
/usr/src/usr.bin/svn/svn_private_config.h
/usr/src/usr.bin/svn/svnserve
/usr/src/usr.bin/svn/svnserve/Makefile
/usr/src/usr.bin/svn/svnversion
/usr/src/usr.bin/svn/svnversion/Makefile
/usr/src/usr.bin/svn/svnmucc
/usr/src/usr.bin/svn/svnmucc/Makefile
# find /usr/src/contrib/subversion/ | wc -l
     611
# find /usr/src/contrib/subversion/ | head
/usr/src/contrib/subversion/
/usr/src/contrib/subversion/subversion
/usr/src/contrib/subversion/subversion/libsvn_diff
/usr/src/contrib/subversion/subversion/libsvn_diff/diff_file.c
/usr/src/contrib/subversion/subversion/libsvn_diff/diff_tree.c
/usr/src/contrib/subversion/subversion/libsvn_diff/diff.c
/usr/src/contrib/subversion/subversion/libsvn_diff/diff3.c
/usr/src/contrib/subversion/subversion/libsvn_diff/diff4.c
/usr/src/contrib/subversion/subversion/libsvn_diff/diff.h
/usr/src/contrib/subversion/subversion/libsvn_diff/util.c
#

Ports CollectionからインストールするSubversionと干渉しないように,/usr/src/contrib/subversion/で使われている共有ライブラリはすべてスタティックリンクになっています。

# ldd /usr/bin/svnlite
/usr/bin/svnlite:
	libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x800afc000)
	libz.so.6 => /lib/libz.so.6 (0x800d22000)
	libcrypt.so.5 => /lib/libcrypt.so.5 (0x800f37000)
	libmagic.so.4 => /usr/lib/libmagic.so.4 (0x801157000)
	libcrypto.so.7 => /lib/libcrypto.so.7 (0x801370000)
	libssl.so.7 => /usr/lib/libssl.so.7 (0x80175b000)
	libthr.so.3 => /lib/libthr.so.3 (0x8019c4000)
	libc.so.7 => /lib/libc.so.7 (0x801be9000)
#  ldd /usr/local/bin/svn
/usr/local/bin/svn:
	libsvn_client-1.so.0 => /usr/local/lib/libsvn_client-1.so.0 (0x80084f000)
	libsvn_wc-1.so.0 => /usr/local/lib/libsvn_wc-1.so.0 (0x800aac000)
	libsvn_ra-1.so.0 => /usr/local/lib/libsvn_ra-1.so.0 (0x800d4d000)
	libsvn_diff-1.so.0 => /usr/local/lib/libsvn_diff-1.so.0 (0x800f5a000)
	libsvn_ra_local-1.so.0 => /usr/local/lib/libsvn_ra_local-1.so.0 (0x80116e000)
	libsvn_repos-1.so.0 => /usr/local/lib/libsvn_repos-1.so.0 (0x801377000)
	libsvn_fs-1.so.0 => /usr/local/lib/libsvn_fs-1.so.0 (0x8015a8000)
	libsvn_fs_fs-1.so.0 => /usr/local/lib/libsvn_fs_fs-1.so.0 (0x8017b2000)
	libsvn_fs_util-1.so.0 => /usr/local/lib/libsvn_fs_util-1.so.0 (0x8019e6000)
	libsvn_ra_svn-1.so.0 => /usr/local/lib/libsvn_ra_svn-1.so.0 (0x801be8000)
	libsvn_ra_serf-1.so.0 => /usr/local/lib/libsvn_ra_serf-1.so.0 (0x801e03000)
	libserf-1.so.0 => /usr/local/lib/libserf-1.so.0 (0x80202e000)
	libdb-4.2.so.2 => /usr/local/lib/libdb-4.2.so.2 (0x802247000)
	libgdbm.so.4 => /usr/local/lib/libgdbm.so.4 (0x80252d000)
	libssl.so.6 => /usr/lib/libssl.so.6 (0x802735000)
	libcrypto.so.6 => /lib/libcrypto.so.6 (0x80298c000)
	libsvn_delta-1.so.0 => /usr/local/lib/libsvn_delta-1.so.0 (0x802d3c000)
	libsvn_subr-1.so.0 => /usr/local/lib/libsvn_subr-1.so.0 (0x802f4e000)
	libz.so.6 => /lib/libz.so.6 (0x8031c6000)
	libsqlite3.so.8 => /usr/local/lib/libsqlite3.so.8 (0x8033db000)
	libmagic.so.4 => /usr/lib/libmagic.so.4 (0x803684000)
	libaprutil-1.so.4 => /usr/local/lib/libaprutil-1.so.4 (0x80389f000)
	libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x803ac0000)
	libapr-1.so.4 => /usr/local/lib/libapr-1.so.4 (0x803ce4000)
	libcrypt.so.5 => /lib/libcrypt.so.5 (0x803f12000)
	libintl.so.9 => /usr/local/lib/libintl.so.9 (0x804131000)
	libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x80433b000)
	libthr.so.3 => /lib/libthr.so.3 (0x80463c000)
	libc.so.7 => /lib/libc.so.7 (0x804860000)
#

今のところsvnlite(1)という名前でインストールされます。svn(1)としてインストールする場合には/etc/src.confや/etc/make.confに「WITH_SVN=YES」を追加します。逆に,svnlite(1)そのものをインストールしたくない場合には「WITHOUT_SVNLITE=YES」を追加します。

コメント

コメントの記入