You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

merge-all.sh 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/bin/bash
  2. FROM=$1
  3. AUTOMERGE=$2
  4. if [ "$FROM" = "" ]
  5. then
  6. echo "Usage: $0 <from version> [automerge]"
  7. exit 3
  8. fi
  9. if [ "$AUTOMERGE" = "automerge" ]
  10. then
  11. AUTOCOMMIT="autocommit"
  12. fi
  13. svn up
  14. localchanges=`svn stat|wc -l`
  15. if [ "$localchanges" != "0" ] && [ "$IGNOREDIRTY" != "ignoredirty" ]
  16. then
  17. echo "You must have a clean working space copy"
  18. exit 4
  19. fi
  20. currentrepowithoutversion=`svn info|grep URL|sed "s/URL: //"|sed "s/\/[^\/]*$//"`
  21. sourceurl="$currentrepowithoutversion/$FROM"
  22. unmerged=`svn mergeinfo --show-revs eligible $sourceurl|sed "s/r//g"`
  23. if [ "$unmerged" = "" ]
  24. then
  25. echo "No changes to merge"
  26. exit 0
  27. fi
  28. echo "Unmerged changes"
  29. echo "================"
  30. for revision in $unmerged
  31. do
  32. echo -n "[$revision] "
  33. svn log $sourceurl -r $revision --xml|grep "<msg>"|sed "s/<msg>//"|sed "s/<\/msg>//"
  34. done
  35. cmd=""
  36. for revision in $unmerged
  37. do
  38. thiscmd=`dirname $0`"/merge.sh $FROM $revision $AUTOCOMMIT $IGNOREDIRTY"
  39. cmd="$cmd $thiscmd && "
  40. if [ "$AUTOMERGE" = "automerge" ]
  41. then
  42. echo "Merging [$revision]..."
  43. $thiscmd
  44. if [ "$?" != "0" ]
  45. then
  46. echo "Merge of [$revision] failed, aborting..."
  47. exit 1
  48. fi
  49. fi
  50. done
  51. cmd="$cmd true"
  52. if [ "$AUTOMERGE" != "automerge" ]
  53. then
  54. echo
  55. echo "Merge command:"
  56. echo
  57. echo $cmd
  58. fi
  59. exit 0