copy src/scripts/mnt-cvsroot, make it NL safe and add a manpage for Debian
authortg <tg@mirbsd.org>
Fri, 10 Jun 2011 23:44:13 +0000 (23:44 +0000)
committertg <tg@mirbsd.org>
Fri, 10 Jun 2011 23:44:13 +0000 (23:44 +0000)
debian/changelog
debian/cvs-switchroot [new file with mode: 0644]
debian/cvs-switchroot.1 [new file with mode: 0644]
debian/install
debian/manpages

index e70426b..aa88e44 100644 (file)
@@ -1,6 +1,7 @@
 cvs (2:1.12.13+real-5) xunstable; urgency=low
 
   * Drop PAM entirely, it was specific to Debian anyway
+  * Add cvs-switchroot, from src/scripts/mnt-cvsroot (Closes: #41685)
 
  -- Thorsten Glaser <tg@mirbsd.de>  Sat, 07 May 2011 01:00:39 +0001
 
diff --git a/debian/cvs-switchroot b/debian/cvs-switchroot
new file mode 100644 (file)
index 0000000..934845e
--- /dev/null
@@ -0,0 +1,99 @@
+#!/bin/mksh
+# $MirOS: contrib/hosted/tg/deb/cvs/debian/cvs-switchroot,v 1.1 2011/06/10 23:44:12 tg Exp $
+#-
+# Copyright © 2005, 2008, 2011
+#      Thorsten “mirabilos” Glaser <tg@mirbsd.org>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+#-
+# Change CVSROOT of a checked out tree (and save space with it)
+# With option -T: change Tag instead of Root
+
+me=${0##*/}
+if [[ $1 = -T ]]; then
+       tagmode=-T
+       fn=Tag
+       shift
+else
+       tagmode=
+       fn=Root
+fi
+newroot=$1
+useroot=0
+if [[ $newroot = - ]]; then
+       shift
+       newroot=$(realpath "$1")
+       [[ -d $newroot ]] && if [[ -d $newroot/CVS ]]; then
+               newroot=$newroot/CVS/$fn
+       else
+               newroot=$newroot/$fn
+       fi
+       useroot=1
+fi
+if [[ -z $newroot || $newroot = -? ]]; then
+       print -u2 "Syntax: $me newroot [dir [...]]"
+       print -u2 "\t$me - .../CVS/Root [dir [...]]"
+       print -u2 "\t$me -T - .../CVS/Tag [dir [...]]"
+       exit 1
+fi
+shift
+
+[[ -z $1 ]] && set -- .
+
+# realpath(2)ise arguments
+set -A arg
+let i=0
+for name in "$@"; do
+       arg[i++]=$(realpath "$name")
+done
+
+if ! T="$(mktemp ${arg[0]}/$me.XXXXXXXXXX)"; then
+       print -u2 "$me: fatal: cannot mktemp"
+       exit 1
+fi
+
+if (( useroot )); then
+       rm -f "$T"
+       ln "$newroot" "$T" || cp "$newroot" "$T"
+fi
+
+trap 'rm -f "$T"; exit 0' 0
+trap 'rm -f "$T"; trap - EXIT; exit 1' 1 2 3 5 13 15
+
+if (( !useroot )); then
+       chmod 664 "$T"
+       print -r -- "$newroot" >"$T"
+fi
+
+let rv=0
+find "${arg[@]}" -path \*/CVS/$fn -print0 |&
+while IFS= read -d '' -pr name; do
+       if ! rm "$name"; then
+               print -u2 "$me: error: cannot rm <$name>"
+               exit 1
+       fi
+       ln -f "$T" "$name" || if ! U="$(mktemp ${arg[0]}/$me.XXXXXXXXXX)"; then
+               cp "$T" "$name"
+       elif cat "$T" >"$U" && ln -f "$U" "$name"; then
+               rm -f "$T"
+               T="$U"
+       else
+               rm -f "$U"
+               cp "$T" "$name"
+       fi
+done
+
+exit 0
diff --git a/debian/cvs-switchroot.1 b/debian/cvs-switchroot.1
new file mode 100644 (file)
index 0000000..0c27ea0
--- /dev/null
@@ -0,0 +1,74 @@
+.\" $MirOS: contrib/hosted/tg/deb/cvs/debian/cvs-switchroot.1,v 1.1 2011/06/10 23:44:12 tg Exp $
+.\"
+.Dd June 10, 2011
+.Dt CVS\-SWITCHROOT 1
+.Os
+.Sh NAME
+.Nm cvs\-switchroot
+.Nd change repository or tag in a cvs working copy
+.Sh SYNOPSIS
+.Nm
+.Op Fl T
+.Ar newroot
+.Op Ar
+.Pp
+.Nm
+.Op Fl T
+\-\&
+.Ar srcpath
+.Op Ar
+.Sh DESCRIPTION
+The
+.Nm
+utility manipulates a CVS working copy directly,
+modifying the information stored in the administrative
+subdirectory and saving space by hardlinking if possible.
+.Pp
+If the
+.Fl T
+option is given, the sticky tag is operated on,
+otherwise, the repository path
+.Pq Ev CVSROOT .
+.Pp
+The information (Tag or Root) is set to the same as in
+.Ar srcpath
+if the first non-option argument
+.Ar newroot
+is a sole dash
+.Pq Sq \-\& ,
+the literal value
+.Ar newroot
+otherwise.
+.Sh EXAMPLES
+Change all
+.Pa Root
+information in the current sandbox to 
+.Pa /cvs :
+.Bd -literal -offset ident
+$ cvs-switchroot /cvs .
+.Ed
+.Pp
+Set all roots in the current working directory and all
+its subdirectories to the
+.Pa Root
+of the parent directory:
+.Bd -literal -offset ident
+$ cvs-switchroot \- .. .
+.Ed
+.Pp
+Hardlink the
+.Pa Tag
+information in the current working directory, for example
+.Pa /usr/src ,
+and
+.Pa /usr/ports
+with each other:
+.Bd -literal -offset ident
+$ cvs-switchroot \-T \- . . /usr/ports
+.Ed
+.Sh SEE ALSO
+.Xr cvs 1
+.Sh HISTORY
+.Nm
+has existed in the MirBSD source tree since 2005.
+It was added to Debian's cvs package in 2011.
index 8fe28a1..b4ef076 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/hosted/tg/deb/cvs/debian/install,v 1.3 2010/09/19 17:31:56 tg Exp $
+# $MirOS: contrib/hosted/tg/deb/cvs/debian/install,v 1.4 2011/06/10 23:44:13 tg Exp $
 #-
 contrib/cvs_acls.html usr/share/cvs/contrib/
 contrib/cvshelp.man usr/share/cvs/contrib/
@@ -6,6 +6,7 @@ contrib/descend.man usr/share/cvs/contrib/
 contrib/descend.sh usr/share/cvs/contrib/
 contrib/rcs2sccs.sh usr/share/cvs/contrib/
 contrib/sandbox_status.man usr/share/cvs/contrib/
+debian/cvs-switchroot usr/bin/
 debian/lintian/cvs usr/share/lintian/overrides/
 debian/stagedir/usr/bin/cvs usr/bin/
 debian/stagedir/usr/bin/cvsbug usr/bin/
index c62861c..022f8a8 100644 (file)
@@ -1,6 +1,7 @@
-# $MirOS: contrib/hosted/tg/deb/cvs/debian/manpages,v 1.1 2010/09/16 00:18:40 tg Exp $
+# $MirOS: contrib/hosted/tg/deb/cvs/debian/manpages,v 1.2 2011/06/10 23:44:13 tg Exp $
 #-
 contrib/rcs2log.1
+debian/cvs-switchroot.1
 debian/stagedir/usr/share/man/man1/cvs.1
 debian/stagedir/usr/share/man/man5/cvs.5
 debian/stagedir/usr/share/man/man8/cvsbug.8