Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Jul 2012 20:57:23 +0000 (UTC)
From:      Beat Gaetzi <beat@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r300901 - head/Tools/scripts
Message-ID:  <201207152057.q6FKvN3Q073265@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: beat
Date: Sun Jul 15 20:57:22 2012
New Revision: 300901
URL: http://svn.freebsd.org/changeset/ports/300901

Log:
  - Update addport and rmport to work with Subversion
  
  Submitted by:	crees, miwi

Modified:
  head/Tools/scripts/addport
  head/Tools/scripts/rmport

Modified: head/Tools/scripts/addport
==============================================================================
--- head/Tools/scripts/addport	Sun Jul 15 18:54:00 2012	(r300900)
+++ head/Tools/scripts/addport	Sun Jul 15 20:57:22 2012	(r300901)
@@ -57,18 +57,16 @@ sub lastcomment();
 
 my %opts;
 
-getopts('abc:d:fh:il:L:M:mns:tu:y', \%opts);
+getopts('ac:d:fh:il:L:M:mns:tu:y', \%opts);
 
 my $autofill_l = $opts{'l'};
 my $autofill_L = $opts{'L'};
 my $autofill = ($autofill_l ? $autofill_l : $autofill_L);
 my $c = $opts{'c'} if ($opts{'c'} ne "");
-my $binfiles = $opts{'b'};
 my $distdir = $opts{'s'} if ($opts{'s'} ne "");
 my $dir = $opts{'d'};
-my $h = "pcvs.FreeBSD.org";
+my $h = "svn.FreeBSD.org";
 $h = $opts{'h'} if ($opts{'h'} ne "");
-my $n = ""; $n = "-n" if $opts{'n'};
 my $u = $ENV{USER};
 $u = $opts{'u'} if ($opts{'u'} ne "");
 my $more_testing = $opts{'t'};
@@ -95,11 +93,6 @@ my %l10nprefix = (
 
 my $tmpdir;
 my $repo;
-my $ssh;
-my $sshmod;
-if( !defined $ENV{"CVS_RSH"} ) {
-	$ENV{CVS_RSH} = "ssh";
-}
 my $portsdir = $ENV{PORTSDIR} ? $ENV{PORTSDIR} : '/usr/ports';
 my $make = "make";
 my $portlint = `which portlint`; chomp $portlint;
@@ -108,6 +101,7 @@ my $perl = "perl";
 my $cp = "cp";
 my $mv = "mv";
 my $rm = "rm";
+my $keyword = '\$FreeBSD\\\$';
 # vars required for commitfile
 my $descr; my $portversion; my $pkgcomment;
 my $tmp; my $pkgcommentlen; my $comment; my $orig;
@@ -117,17 +111,11 @@ $tmp = $tmp2 = $offset = 0;
 chomp(my $myhost = lc(hostname()));
 $moduleshost = $myhost if ($moduleshost eq "");
 
-# SSH is always required nowadays... pcvs.FreeBSD.org isn't shell accessible.
-$ssh = "$ENV{CVS_RSH} $h -l $u";
-if ($myhost eq $moduleshost) {
-	$sshmod = "";
+if ($ENV{ADDPSVNROOT}) {
+	$repo = "$ENV{ADDPSVNROOT}";
 } else {
-	$sshmod = "$ENV{CVS_RSH} -A $moduleshost -l $u";
+	$repo = "svn+ssh://$u\@$h/ports/head";
 }
-$repo= "$u\@$h:/home/pcvs" if !$ENV{ADDPCVSROOT};
-$repo = "$ENV{ADDPCVSROOT}" if $ENV{ADDPCVSROOT};
-
-my $cvs = "cvs -d $repo";
 
 # Check the editor.
 my $edit = "/usr/bin/vi";
@@ -168,10 +156,8 @@ if ($addlchk && -f $portlint) {
 	if (!$nomkdir) {
 		chdir $tmpdir;
 		print "Checking out Mk directory to ensure portlint correctness.\n";
-		system("$cvs co ports/Mk") && errx(1, "Could not checkout Mk directory");
-		system("$cvs co ports/Templates") && errx(1, "Could not checkout Templates directory");
-		system("mv ports/Mk Mk") && errx(1, "Could not set up Mk directory");
-		system("mv ports/Templates Templates") && errx(1, "Could not set up Templates directory");
+		system("svn co $repo/Mk Mk") && errx(1, "Could not checkout Mk directory");
+		system("svn co $repo/Templates Templates") && errx(1, "Could not checkout Templates directory");
 		chdir $currentdir;
 	}
 }
@@ -187,7 +173,7 @@ if ($dir eq "") {
 if ($checkexist) {
 	my $found = 0;
 	print ">> Checking out modules file to scan for duplicates...";
-	system("$cvs -q co -p modules > $tmpdir/modules") && errx(1, "Could not checkout CVSROOT/modules.");
+#	system("$cvs -q co -p modules > $tmpdir/modules") && errx(1, "Could not checkout CVSROOT/modules.");
 	print " [DONE]\n";
 	my @namepart;
 	foreach (split(/\,/, $dir)) {
@@ -232,7 +218,7 @@ foreach my $thisdir (@dirs) {
 	chomp $portname;
 	warnx("Port directory contains upper-case character! Please try using an all lower-case name to make everybody's life a bit easier.") if ($portname =~ /[A-Z]/);
 	if ($interactive) {
-		if (prompt("Port directory name will be $portname in CVS Repo.  OK? ")) {
+		if (prompt("Port directory name will be $portname in SVN Repo.  OK? ")) {
 			do {
 				$portname = query("Preferred name for port directory? ");
 			} while (prompt("Is the new name $portname OK? "));
@@ -246,7 +232,7 @@ foreach my $thisdir (@dirs) {
 		system("$_") && errx(1, "'$_' had problems. aborting.");
 	}
 
-	# Get the category name and make it suitable for use with cvs
+	# Get the category name and make it suitable for use with svn
 	my $category;
 	$_ = `$make -V CATEGORIES`;
 	m/([\w-]+)/;
@@ -259,8 +245,8 @@ foreach my $thisdir (@dirs) {
 			} while (prompt("Is the new category $category OK? "));
 		}
 	}
-	chomp(my $cvs_category = $category);
-	$cvs_category =~ s/-/_/g;
+	chomp(my $svn_category = $category);
+	$svn_category =~ s/-/_/g;
 
 	# Do commitfile checking but only if the user did not request automatic filling.
 	if (!$autofill) {
@@ -323,40 +309,38 @@ foreach my $thisdir (@dirs) {
 		print "\nRemember, you asked to use a commit file to read for the commit log.\n";
 		print "This means you'll get a message saying the log message was unchanged or\n";
 		print "not specified.  Just tell it to continue and it will be committed.\n\n";
-		$commitfile = "-F $tmpdir/commitfile";
+		$commitfile = "--file $tmpdir/commitfile";
 	}
 
 	print "We're ready to commit.\n";
 	print "Source directory: $thisdir\n";
-	print "Target CVS Repo directory: ports/$category/$portname\n";
+	print "Target SVN Repo directory: ports/$category/$portname\n";
 	prompt("Adding port $portname to $category OK? ") && errx(1, "user abort requested");
 	
 	chdir $tmpdir or err(1, "$tmpdir");
 
 	# let's get our hands dirty.
 	if (! -d $category) {
-		system("$cvs co -l ports_$cvs_category") && errx(1, "can't get temporary category directory, aborting.");
-		system("$mv ports_$cvs_category $category");
+		system("svn co --depth files $repo/$svn_category $category") && errx(1, "can't get temporary category directory, aborting.");
 	}
 	chdir $category or err(1,"$category");
 	system("$cp -PRp $thisdir .");
-	system("$cvs add `find $portname -type d | grep -v CVS | grep -v '^$portname/work'`") && errx(1, "cvs add for dirs failed, aborting.");
+	system("svn add --depth empty `find $portname -type d | grep -v '^$portname/work'`") && errx(1, "svn add for dirs failed, aborting.");
 
-	my $gotfiles = 0;
-	if ($binfiles) {
-		if (-d "$portname/files") {
-			my (@pf, $fd);
-			opendir($fd, "$portname/files") and
-				@pf = grep { /^.*patch-.*$/ } readdir($fd);
-			$gotfiles = ++$#pf;
-		}
-	}
+	system("svn add `find $portname -type f | grep -v '^$portname/work'`") && errx(1, "svn add for files failed, aborting.");
 
-	if ($binfiles && $gotfiles > 0) {
-		system("$cvs add `find $portname -type f | grep -v CVS | grep -v '^$portname/files/.*patch-.*' | grep -v '^$portname/work'`") && errx(1, "cvs add for files failed, aborting.");
-		system("$cvs add -ko `find $portname -type f | grep -v CVS | grep -v '^$portname/work' | grep '^$portname/files/.*patch-.*'`") && errx(1, "cvs add for files failed, aborting.");
-	} else {
-		system("$cvs add `find $portname -type f | grep -v CVS | grep -v '^$portname/work'`") && errx(1, "cvs add for files failed, aborting.");
+	# find files with keywords in and propset
+
+	my @portfiles = split("\n", `find $portname -type f`);
+	my $portfiles = join(" ", @portfiles);
+	my @keywordfiles = split("\n", `grep -l $keyword $portfiles`);
+	foreach (@portfiles) {
+		if ($_ ~~ @keywordfiles) {
+			system("svn -q propset svn:keywords FreeBSD=%H $_");
+			system("svn -q propdel fbsd:nokeywords $_");
+		} else {
+			system("svn -q propset fbsd:nokeywords on $_");
+		}
 	}
 
 	# figure out where the port name belongs in category Makefile
@@ -396,7 +380,11 @@ foreach my $thisdir (@dirs) {
 
 	# commit the actual port.
 	chdir "$tmpdir/$category" or err(1, "$tmpdir/$category");
-	system("$cvs $n ci $commitfile Makefile $portname") && errx(1, "cvs commit failed, aborting.");
+	if ($opts{'n'}) {
+		print "Faking commit....\n";
+	} else {
+		system("svn ci $commitfile Makefile $portname") && errx(1, "svn commit failed, aborting.");
+	}
 }
 
 print <<EOF;
@@ -460,11 +448,9 @@ SYNOPSIS
 OPTIONS
 	-a		Perform checks on the port to make sure
 			there are no problems.  Recommended.
-	-b		Add all patch-* files in \${FILESDIR} as binary
-			files (i.e. don't expand CVS tags)
 	-c file		Use file in place of normal log message.
 	-f		Do not fetch the distfile.
-	-h host		Use a cvshost besides pcvs.FreeBSD.org.
+	-h host		Use a svnhost besides svn.FreeBSD.org.
 	-i		Interactive mode; allow more control over
 			where things are placed.
 	-l PR#		Attempts to autogenerate a commit message by
@@ -486,8 +472,7 @@ OPTIONS
 ENVIRONMENT VARIABLES
 	$0 supports the following environment variables:
 
-	CVS_RSH		- Command to use when connecting to CVS host.
-	ADDPCVSROOT	- Location of CVS repository.
+	ADDPSVNROOT	- Location of SVN repository.
 	USER		- Username of user invoking $0.
 
 EXAMPLES

Modified: head/Tools/scripts/rmport
==============================================================================
--- head/Tools/scripts/rmport	Sun Jul 15 18:54:00 2012	(r300900)
+++ head/Tools/scripts/rmport	Sun Jul 15 20:57:22 2012	(r300901)
@@ -44,7 +44,7 @@ TODAY=`date -u -v+0d +%Y-%m-%d`
 
 SED="sed -i .orig -E"
 # use ~/.ssh/config to set up the desired username if different than $LOGNAME
-PCVS=${PCVS:-cvs -d pcvs.freebsd.org:/home/pcvs}
+SVNREPO=${SVNREPO:-svn+ssh://svn.FreeBSD.org/ports}
 
 if ! CDIFF=$(which cdiff) ; then
 	CDIFF=${EDITOR}
@@ -122,13 +122,7 @@ mkcodir()
 {
 	log "creating temporary directory"
 	d=`mktemp -d -t rmport`
-	mkdir ${d}/CVS
-	cat > ${d}/CVS/Repository <<REPOSITORY
-We need ./CVS directory in order to create a custom commit message template
-(and put it in ./CVS/Template). Anyway cvs insists on CVS/Repository existence
-although it (hopefully) does not care about its contents.
-REPOSITORY
-	touch ${d}/CVS/Template
+	touch ${d}/svnlog
 	log "created ${d}"
 	echo "${d}"
 }
@@ -137,7 +131,8 @@ REPOSITORY
 co_common()
 {
 	log "getting ports/MOVED and ports/LEGAL from repository"
-	${PCVS} co ports/MOVED ports/LEGAL
+	svn co --depth empty ${SVNREPO}/head ports
+	svn up ports/MOVED ports/LEGAL
 }
 
 # check if some ports depend on the given port
@@ -297,7 +292,8 @@ co_port()
 	port=${2}
 
 	log "${cat}/${port}: getting ${cat}/Makefile and port's files from repository"
-	${PCVS} co ports/${cat}/Makefile ports/${cat}/${port}
+	svn up --depth empty ports/${cat} ports/$cat/Makefile
+	svn up ports/${cat}/${port}
 }
 
 # check if anything about the port is mentioned in ports/LEGAL
@@ -362,7 +358,7 @@ rm_port()
 
 	log "${catport}: removing port's files"
 
-	${PCVS} rm `find ports/${catport} -type f -not -path "*/CVS/*" -delete -print`
+	svn rm ports/${catport}
 }
 
 append_Template()
@@ -383,7 +379,7 @@ append_Template()
 
 	log "${catport}: adding entry to commit message template"
 
-	echo "${msg}" >> ./CVS/Template
+	echo "${msg}" >> ./svnlog
 }
 
 # diff
@@ -393,9 +389,9 @@ diff()
 
 	diffout=${codir}/diff
 
-	${PCVS} diff -uN ports > ${diffout} 2>&1 || :
+	svn diff ports > ${diffout} 2>&1 || :
 
-	read -p "hit <enter> to view cvs diff output" dummy
+	read -p "hit <enter> to view svn diff output" dummy
 
 	# give this to the outside world so it can be showed to the committer
 	# and removed when we are done
@@ -405,13 +401,15 @@ diff()
 # update, ask for confirmation and commit
 commit()
 {
-	log "running cvs update"
-	${PCVS} -fnq up ports 2>&1 |${PAGER:-less}
+	log "running svn update"
+	svn up --quiet ports 2>&1 |${PAGER:-less}
+
+	$EDITOR svnlog
 
 	answer=`ask "do you want to commit?"`
 
 	if [ "${answer}" = "y" ] ; then
-		${PCVS} ci ports
+		svn ci --file svnlog ports
 	fi
 }
 
@@ -424,11 +422,10 @@ cleanup()
 
 	rm ${diffout}
 
-	rm CVS/Entries.Log CVS/Repository CVS/Template
-	rmdir CVS
+	rm svnlog
 
-	# release cvs directories
-	${PCVS} rel -d ports
+	# release ports directories
+	rm -r ports
 
 	cd /
 	rmdir ${codir}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207152057.q6FKvN3Q073265>