sdl_update.sh
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #! /bin/sh
  2. export CVS_RSH=cvsssh
  3. CVS_N=
  4. #
  5. # original repository information.
  6. # origin_dir is local directory where to store
  7. # origin_name is username to use when checking out
  8. # origin_host is name of host where repository is stored
  9. # origin_cvsroot is location of cvs root on host where repository is stored
  10. #
  11. origin_dir=SDL-1.2.2
  12. #
  13. # destination repository information.  See origin information for details
  14. #
  15. dest_dir=mpeg4ip/lib/SDL
  16. #
  17. # temp_dir is directory where we store files we create, logs
  18. #
  19. temp_dir=temp
  20. start_dir=`pwd`
  21. # Create temp directory
  22. if test -d $temp_dir; then
  23.   mkdir -p $temp_dir
  24.   temp_dir=$start_dir/$temp_dir
  25. fi
  26. cd $dest_dir
  27. dest_dir=`pwd`
  28. cd $start_dir
  29. cd $origin_dir
  30. origin_dir=`pwd`
  31. cd $start_dir
  32. # File descriptor usage
  33. # 6 messages and results
  34. # 5 log
  35. exec 5>$temp_dir/sdl_updater.log
  36. exec 6>&1
  37. echo "SDL Updater log `date`" >&5
  38. cd $dest_dir
  39. find . -type d -print | grep -v "CVS$" > $temp_dir/dest_dirs
  40. cd $start_dir
  41. cd $origin_dir
  42. find . -type d -print | grep -v "CVS$" > $temp_dir/orig_dirs
  43. echo Beginning origin to destination update >&5
  44. echo Beginning origin to destination update >&6
  45. #
  46. # Main loop.  Go through list of directories in origin, 
  47. #
  48. DIR_CNT=0
  49. FILE_CNT=0
  50. NEW_DIR_CNT=0
  51. NEW_FILE_CNT=0
  52. for orig_dir_on in `cat $temp_dir/orig_dirs`
  53. do
  54.   dest_dir_on=$dest_dir/$orig_dir_on
  55.   #
  56.   # check if origin directory exists on destination
  57.   #
  58.   if test ! -d $dest_dir_on; then
  59.     echo $orig_dir_on exists in origin but not destination - creating >&5
  60.     base=`basename $dest_dir_on`
  61.     dir=`dirname $dest_dir_on`
  62.     cd $dir
  63.     mkdir $base
  64.     cvs $CVS_N add $base 1>&5 2>&5
  65.     NEW_DIR_CNT=$(($NEW_DIR_CNT + 1))
  66.   fi
  67.   #
  68.   # Now check all the files in origin directory against files on destination
  69.   #
  70.   cd $origin_dir/$orig_dir_on
  71.   #echo finding files in $orig_dir_on
  72.   find . -maxdepth 1 -type f -print > $temp_dir/orig_files
  73.   FILE_IN_DIR=0
  74.   for file in `cat $temp_dir/orig_files`
  75.   do
  76.     cd $origin_dir/$orig_dir_on
  77.     if test ! -e $dest_dir_on/$file; then
  78.        echo $dest_dir_on/$file does not exist - copying >&5
  79.        cp $file $dest_dir_on
  80.        cd $dest_dir_on
  81.        cvs $CVS_N add $file 1>&5 2>&5
  82.        NEW_FILE_CNT=$(($NEW_FILE_CNT + 1))
  83.        FILE_IN_DIR=$(($FILE_IN_DIR + 1))
  84.     else
  85.        diff=`diff --brief $file $dest_dir_on/$file`
  86.        if test ! -z "$diff"; then
  87.           echo $dest_dir_on/$file has changed - copying >&5
  88.   diff -c -w $file $dest_dir_on/$file >>$temp_dir/diffs
  89.   cp $file $dest_dir_on/$file
  90.   FILE_IN_DIR=$(($FILE_IN_DIR + 1))
  91.        fi
  92.     fi
  93.   done
  94.   FILE_CNT=$(($FILE_CNT + $FILE_IN_DIR))
  95.   if test $FILE_IN_DIR -ne 0; then
  96.     DIR_CNT=$(($DIR_CNT + 1))
  97.   fi
  98. done
  99. rm -f $temp_dir/orig_files
  100. echo Files changed: $FILE_CNT >&6
  101. echo Directories changed: $DIR_CNT >&6
  102. echo New Files added: $NEW_FILE_CNT >&6
  103. echo New Directories added: $NEW_DIR_CNT >&6
  104. echo Checking for removed files from origin >&5
  105. echo Checking for removed files from origin >&6
  106. #
  107. # Now, check for any files in the destination repository that are
  108. # no longer present in the repository.
  109. #
  110. for dest_dir_on in `cat $temp_dir/dest_dirs`
  111. do
  112.    cd $dest_dir/$dest_dir_on
  113.    if test ! -d $origin_dir/$dest_dir_on; then
  114.       echo $origin_dir/$dest_dir_on no longer exists >&5
  115.       echo $origin_dir/$dest_dir_on no longer exists >&6
  116. #      rm * 1>&5 2>&5
  117. #      cd ..
  118. #      base=`basename $dest_dir_on`
  119. #      cat > $temp_dir/commit.note <<EOF
  120. #Removing directory $base from repository `date`
  121. #EOF
  122. #      cvs $CVS_N remove $base 1>&5 2>&5
  123. #      cvs $CVS_N commit -F $temp_dir/commit.note $base 1>&5 2>&5
  124.    else
  125.       find . -maxdepth 1 -type f -print > $temp_dir/dest_files
  126.       for file in `cat $temp_dir/dest_files`
  127.       do
  128.          if test ! -e $origin_dir/$dest_dir_on/$file; then
  129.             echo $origin_dir/$dest_dir_on/$file no longer exists
  130. #     rm -f $file
  131. #     cvs $CVS_N remove $file 1>&5 2>&5
  132.  fi
  133.       done
  134.    fi
  135. done
  136.