⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvs2vendor

📁 MSYS在windows下模拟了一个类unix的终端
💻
字号:
#! /bin/sh##	cvs2vendor - move revsisions from files in A to files in B# # The primary reason for this script is to move deltas from a# non-vendor branched repository onto a fresh vendor branched one,# skipping the initial checkin in assumption that it is the same in# both repositories.  This way you can take a project that was moved# into CVS without the benefit of the vendor branch and for all# intents and purposes add the vendor branch underneath the existing# deltas.# # This script is also a decent example of repository maintenance using# raw RCS commands (if I do say so myself! ;-).# # Tags are preserved.# # The timestamp of the initial vendor branch revision will be adjusted# to be the same as the 1.1 revision of each source file.# # Extra branches in the source directory will cause breakage.# # Intermediate files are created in the current working directory# where this script is started.# # Written by Greg A. Woods <woods@planix.com>, based on rcs2sccs# (retains some of the rlog parsing from it).# # The copyright is in the Public Domain.#if [ $# -ne 2 ]; then	echo USAGE: $0 srcdir dstdir	exit 2fitsrcdir=$1tdstdir=$2revfile=/tmp/cvs2vendor_$$_revrm -f $revfilecommentfile=/tmp/cvs2vendor_$$_commentrm -f $commentfilesrcdirs=`cd $tsrcdir && find . -type d -print | sed 's~^\.[/]*~~'`# the "" is a trick to get $tsrcdir itself without resorting to '.'for ldir in "" $srcdirs; do	srcdir=$tsrcdir/$ldir	dstdir=$tdstdir/$ldir	# Loop over every RCS file in srcdir	#	for vfile in $srcdir/*,v; do		# get rid of the ",v" at the end of the name		file=`echo $vfile | sed -e 's/,v$//'`		bfile=`basename $file`		if [ ! -d $dstdir ]; then			echo "making locally added directory $dstdir"			mkdir -p $dstdir		fi		if [ ! -f $dstdir/$bfile,v ]; then			echo "copying locally added file $dstdir/$bfile ..."			cp $vfile $dstdir			continue;		fi		# work on each rev of that file in ascending order		rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile		for rev in `cat $revfile`; do			case "$rev" in			1.1)				newdate=`rlog -r$rev $file | grep "^date: " | awk '{printf("%s.%s\n",$2,$3); exit}' | sed -e 's~/~.~g' -e 's/:/./g' -e 's/;//' -e 's/^19//'`				olddate=`rlog -r1.1.1.1 $dstdir/$bfile | grep "^date: " | awk '{printf("%s.%s\n",$2,$3); exit}' | sed -e 's~/~.~g' -e 's/:/./g' -e 's/;//' -e 's/^19//'`				sed "s/$olddate/$newdate/" < $dstdir/$bfile,v > $dstdir/$bfile.x				mv -f $dstdir/$bfile.x $dstdir/$bfile,v				chmod -w $dstdir/$bfile,v				symname=`rlog -h $file | sed -e '1,/^symbolic names:/d' -e 's/[ 	]*//g' | awk -F: '$2 == "'"$rev"'" {printf("-n%s:1.1.1.1\n",$1)}'`				if [ -n "$symname" ]; then					echo "tagging $file with $symname ..."					rcs $symname $dstdir/$bfile,v					if [ $? != 0 ]; then						echo ERROR - rcs $symname $dstdir/$bfile,v						exit 1					fi				fi				continue			# skip first rev....				;;			esac			# get a lock on the destination local branch tip revision			co -r1 -l $dstdir/$bfile			if [ $? != 0 ]; then				echo ERROR - co -r1 -l $dstdir/$bfile				exit 1			fi			rm -f $dstdir/$bfile			# get file into current dir and get stats			date=`rlog -r$rev $file | grep "^date: " | awk '{printf("%s %s\n",$2,$3); exit}' | sed -e 's/;//'`			author=`rlog -r$rev $file | grep "^date: " | awk '{print $5; exit}' | sed -e 's/;//'`			symname=`rlog -h $file | sed -e '1,/^symbolic names:/d' -e 's/[ 	]*//g' | awk -F: '$2 == "'"$rev"'" {printf("-n%s\n",$1)}'`			rlog -r$rev $file | sed -e '/^branches: /d' -e '1,/^date: /d' -e '/^===========/d' | awk '{if ((total += length($0) + 1) < 510) print $0}' > $commentfile			echo "==> file $file, rev=$rev, date=$date, author=$author $symname"			co -p -r$rev $file > $bfile			if [ $? != 0 ]; then				echo ERROR - co -p -r$rev $file				exit 1			fi			# check file into vendor repository...			ci -f -m"`cat $commentfile`" -d"$date" $symname -w"$author" $bfile $dstdir/$bfile,v			if [ $? != 0 ]; then				echo ERROR - ci -f -m"`cat $commentfile`" -d"$date" $symname -w"$author" $bfile $dstdir/$bfile,v				exit 1			fi			rm -f $bfile			# set the default branch to the trunk...			# XXX really only need to do this once....			rcs -b1 $dstdir/$bfile			if [ $? != 0 ]; then				echo ERROR - rcs -b1 $dstdir/$bfile				exit 1			fi		done	donedoneecho cleaning up...rm -f $commentfileecho "       Conversion Completed Successfully"exit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -