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

📄 repository_sync.sh

📁 网络MPEG4IP流媒体开发源代码
💻 SH
字号:
#! /bin/shrepository=mpeg4ipexport CVS_RSH=cvssshCVS_N=release=0startfrombase=0skipversion=0while getopts "rbs" opt; do    case $opt in       r ) release=1 ;;       b ) startfrombase=1 ;;       s ) skipversion=1 ;;    esacdone## original repository information.# origin_dir is local directory where to store# origin_name is username to use when checking out# origin_host is name of host where repository is stored# origin_cvsroot is location of cvs root on host where repository is stored#origin_dir=originorigin_name=wmayorigin_host=buhundorigin_cvsroot=/vws/pan## destination repository information.  See origin information for details#dest_dir=sourceforgedest_name=wmayciscodest_host=cvs.mpeg4ip.sourceforge.netdest_cvsroot=/cvsroot/mpeg4ip## temp_dir is directory where we store files we create, logs#temp_dir=tempstart_dir=`pwd`# Create temp directoryif test -d $temp_dir; then  mkdir -p $temp_dir  temp_dir=$start_dir/$temp_dirfiorigin_CVSROOT="$origin_name@$origin_host:$origin_cvsroot"dest_CVSROOT="$dest_name@$dest_host:$dest_cvsroot"## create repository directory - make sure it's not appended to the end of# the directory name already#temp=`basename $origin_dir`if test $repository = $temp; then   origin_rep=$origin_dir   origin_dir=`dirname $origin_dir`else   origin_rep="$origin_dir/$repository"fi## same with destination#temp=`basename $dest_dir`if test $repository = $temp; then   dest_rep=$dest_dir   dest_dir=`dirname $dest_dir`else   dest_rep="$dest_dir/$repository"fi# File descriptor usage# 6 messages and results# 5 logexec 5>$temp_dir/repository_updater.logexec 6>&1echo "Repository Updater log `date`" >&5echo Checking for origin repository existance  >&5echo Checking for origin repository existance  >&6## create or update the origin repository. At this time, update# origin_dir and origin_rep to have absolute path names#if test ! -d $origin_rep; then    echo $origin_rep does not exist >&5    echo $origin_rep does not exist >&6    echo Creating $origin_dir >&5    mkdir -p $origin_dir >&5    if test ! -d $origin_dir; then	exit -1    fi    echo Checking out origin cvs repository $origin_CVSROOT >&6    cd $origin_dir    origin_dir=`pwd`    cvs -d $origin_CVSROOT checkout -P -kk $repository 1>&5 2>&5    cd $repository    origin_rep=`pwd`else    cd $origin_dir    origin_dir=`pwd`    cd $repository    origin_rep=`pwd`    echo Updating origin cvs repository $origin_rep >&6    cvs update -P -kk -d 1>&5 2>&5fi## Do version number update#if [ $skipversion = 0 ]; then   if [ $release = 1 ]; then      newver=`cat RELEASE_VERSION | tr '.' ' '`      sh util/version.sh $newver > RELEASE_VERSION      cp RELEASE_VERSION VERSION   else      if [ $startfrombase = 1 ]; then         newver=`cat RELEASE_VERSION`         newver=$newver.1         echo $newver > VERSION      else         newver=`cat VERSION | tr '.' ' '`         sh util/version.sh $newver > VERSION      fi   fi   #   # Update version file for windows   #   echo New version number is `cat VERSION` >&5   echo New version number is `cat VERSION` >&6   echo \#define PACKAGE \"mpeg4ip\" > include/win32_ver.h   echo \#define VERSION \"`cat VERSION`\" >> include/win32_ver.h   #   # Update configure.in version   #   awk -v VERSION=`cat VERSION` -f util/replaceversion configure.in > temp   mv temp configure.in   cvs $CVS_N commit -m 'Version bump for sync' VERSION RELEASE_VERSION include/win32_ver.h configure.in 1>&5 2>&5fi## Tag this directory#tagvalue=`cat VERSION | tr -s '.' '_'`tagvalue1=`date +_%y%m%d_%H%M`tagvalue=VERSION_$tagvalue$tagvalue1echo Tagging source tree with $tagvalue >&5echo Tagging source tree with $tagvalue >&6cvs $CVS_N tag $tagvalue 1>&5 2>&5cd $start_dir## checkout or update destination repository.  Update dest_dir, dest_rep# to use absolute path names, as well#if test ! -d $dest_rep; then    echo $dest_rep does not exist >&5    echo $dest_rep does not exist >&6    echo Creating $dest_dir >&5    mkdir -p $dest_dir >&5    if test ! -d $dest_dir; then	exit -1    fi    echo Checking out destination cvs repository $dest_CVSROOT >&6    cd $dest_dir    dest_dir=`pwd`    cvs -d $dest_CVSROOT checkout -P -kk $repository 1>&5 2>&5    cd $repository    dest_rep=`pwd`else    cd $dest_dir    dest_dir=`pwd`    cd $repository    dest_rep=`pwd`    echo Updating dest cvs repository $dest_rep >&6    cvs update -P -kk -d 1>&5 2>&5fiecho "Creating directory lists" >&5echo "Creating directory lists" >&6cd $dest_dirfind . -type d -print | grep -v "CVS$" > $temp_dir/dest_dirscd $origin_dirfind . -type d -print | grep -v "CVS$" > $temp_dir/orig_dirsecho Beginning origin to destination update >&5echo Beginning origin to destination update >&6## Main loop.  Go through list of directories in origin, #DIR_CNT=0FILE_CNT=0NEW_DIR_CNT=0NEW_FILE_CNT=0for orig_dir_on in `cat $temp_dir/orig_dirs`do  if test $orig_dir_on = "."; then     continue;  fi  dest_dir_on=$dest_dir/$orig_dir_on  #  # check if origin directory exists on destination  #  if test ! -d $dest_dir_on; then    echo $orig_dir_on exists in origin but not destination - creating >&5    base=`basename $dest_dir_on`    dir=`dirname $dest_dir_on`    cd $dir    mkdir $base    cvs $CVS_N add $base 1>&5 2>&5    NEW_DIR_CNT=$(($NEW_DIR_CNT + 1))  fi  #  # Now check all the files in origin directory against files on destination  #  cd $origin_dir/$orig_dir_on  #echo finding files in $orig_dir_on  find . -maxdepth 1 -type f -print > $temp_dir/orig_files  FILE_IN_DIR=0  for file in `cat $temp_dir/orig_files`  do    cd $origin_dir/$orig_dir_on    if test ! -e $dest_dir_on/$file; then       echo $dest_dir_on/$file does not exist - copying >&5       cp $file $dest_dir_on       cd $dest_dir_on       cvs $CVS_N add $file 1>&5 2>&5       NEW_FILE_CNT=$(($NEW_FILE_CNT + 1))       FILE_IN_DIR=$(($FILE_IN_DIR + 1))    else       diff=`diff --brief $file $dest_dir_on/$file`       if test ! -z "$diff"; then          echo $dest_dir_on/$file has changed - copying >&5	  diff -c -w $file $dest_dir_on/$file >>$temp_dir/diffs	  cp $file $dest_dir_on/$file	  FILE_IN_DIR=$(($FILE_IN_DIR + 1))       fi    fi  done  FILE_CNT=$(($FILE_CNT + $FILE_IN_DIR))  if test $FILE_IN_DIR -ne 0; then    DIR_CNT=$(($DIR_CNT + 1))  fidonerm -f $temp_dir/orig_filesecho Files changed: $FILE_CNT >&6echo Directories changed: $DIR_CNT >&6echo New Files added: $NEW_FILE_CNT >&6echo New Directories added: $NEW_DIR_CNT >&6echo Checking for removed files from origin >&5echo Checking for removed files from origin >&6## Now, check for any files in the destination repository that are# no longer present in the repository.#for dest_dir_on in `cat $temp_dir/dest_dirs`do   if test $dest_dir_on = "."; then       continue;   fi   cd $dest_dir/$dest_dir_on   if test ! -d $origin_dir/$dest_dir_on; then      echo $origin_dir/$dest_dir_on no longer exists >&5      echo $origin_dir/$dest_dir_on no longer exists >&6      rm * 1>&5 2>&5      cd ..      base=`basename $dest_dir_on`      cat > $temp_dir/commit.note <<EOFRemoving directory $base from repository `date`EOF      cvs $CVS_N remove $base 1>&5 2>&5      cvs $CVS_N commit -F $temp_dir/commit.note $base 1>&5 2>&5   else      find . -maxdepth 1 -type f -print > $temp_dir/dest_files      for file in `cat $temp_dir/dest_files`      do         if test ! -e $origin_dir/$dest_dir_on/$file; then            echo $origin_dir/$dest_dir_on/$file no longer exists	    rm -f $file	    cvs $CVS_N remove $file 1>&5 2>&5	 fi      done   fidone   

⌨️ 快捷键说明

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