2 # review - Move a certain revision from sunrise/ to reviewed/
3 # Released into the public domain
5 source /etc/init.d/functions.sh
20 if [[ "$opt_noupdate" == "0" ]] ; then
23 local conflict_files=$(svn status | sed -rn 's/^C.+ ([^ ]+)$/\1/p')
24 if [[ -n "$conflict_files" ]] ; then
25 echo "!!! Error: Some local files have changes that conflict with the latest"
26 echo "!!! revisions in the repository. Please contact the previous committer(s) to"
27 echo "!!! resolve the conflicts manually before running sunrise-commit again:"
28 for filename in $conflict_files ; do
30 echo "!!! file: ${filename}"
31 echo "!!! committer: $(svn info ${filename} | sed -rn 's/Last Changed Author\: (.*)$/\1/p')"
40 if [[ "$opt_norepoman" == "0" ]] ; then
41 ebegin "Running repoman"
42 export PORTDIR_OVERLAY="$(pwd)"
51 ${BOLD}Usage:${NORMAL} ${LIGHTBLUE}$0${NORMAL} [ ${GREEN}options${NORMAL} ] ${BLUE}revision${NORMAL}
53 ${GREEN}options${NORMAL}:
54 ${BOLD}--help, -h${NORMAL} Show help
55 ${BOLD}--norepoman, -p${NORMAL} Skip repoman check
56 ${BOLD}--noupdate, -d${NORMAL} Don't update from repository before committing
57 ${BOLD}--quiet, -q${NORMAL} Don't ask for confirmation
58 ${BOLD}--verbose, -v${NORMAL} Show detailed information during commit
63 while [[ $# > 0 ]] ; do
85 echo "!!! Error: Unknown option ${1}. See: sunrise-commit -h"
93 if [[ -z "$*" ]] ; then
94 ebegin "Updating working copy to latest version from repository"
96 if [[ "$opt_verbose" == "1" ]] ; then
99 update=$(echo $update | tail -n 1)
100 update=${update/At revision }
101 sunrise_revision=${update/.}
102 [ "$sunrise_revision" -lt "10" ] && exit 1
104 #elif [[ "$*" =~ "^[0-9]*$" ]]; then
105 # echo "!!! Error: The revision must be an integer value $*"
110 ebegin "Updating working copy to latest version from repository"
111 svn_up -r $sunrise_revision || exit $?
115 if ! [ -e sunrise ] || ! [ -e reviewed ]; then
116 eerror "You need to have sunrise and reviewed subdirs"
120 reviewed_revision=$(svn log reviewed 2>/dev/null | grep "Reviewed up to revision " -m 1 | sed "s:Reviewed up to revision ::")
122 if [ $reviewed_revision -gt $sunrise_revision ]; then
123 eerror "a newer revision is already reviewed"
129 repoman_check || exit $?
131 ebegin "Running portdupe"
136 if [[ "$opt_quiet" == "0" ]] ; then
137 which diffstat >/dev/null 2>&1 && diff -Nur reviewed sunrise --exclude=.svn | diffstat
138 diff -Nur reviewed sunrise --exclude=Manifest --exclude=.svn --exclude=metadata.xml --exclude=digest-*
140 ) | if [[ "$opt_quiet" == "0" ]] ; then less; else cat; fi
142 if [[ "$opt_quiet" == "0" ]] ; then
144 echo -n "${BOLD}Commit changes?${NORMAL} [${GREEN}Yes${NORMAL}/${RED}No${NORMAL}] "
159 ebegin "Merging in changes..."
160 if [[ "$opt_verbose" == "1" ]] ; then
161 svn merge sunrise@$reviewed_revision sunrise@$sunrise_revision reviewed
163 svn merge sunrise@$reviewed_revision sunrise@$sunrise_revision reviewed -q
167 ebegin "Committing working copy to repository"
168 svn commit reviewed -m "Reviewed up to revision $sunrise_revision"