diff options
author | 2006-11-05 20:47:59 +0000 | |
---|---|---|
committer | 2006-11-05 20:47:59 +0000 | |
commit | 771b6cea14995dfd30906695e5465dd9baf5114c (patch) | |
tree | 81182ae2e03680e62938cf6b17788515d58b4474 /scripts | |
parent | app-portage/overlay-utils: Updated to work with the changed =~ operator seman... (diff) | |
download | sunrise-reviewed-771b6cea14995dfd30906695e5465dd9baf5114c.tar.gz sunrise-reviewed-771b6cea14995dfd30906695e5465dd9baf5114c.tar.bz2 sunrise-reviewed-771b6cea14995dfd30906695e5465dd9baf5114c.zip |
scripts/sunrise-commit: removed as it is unneeded now, use overlay-utils
svn path=/sunrise/; revision=1835
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/sunrise-commit | 350 |
1 files changed, 0 insertions, 350 deletions
diff --git a/scripts/sunrise-commit b/scripts/sunrise-commit deleted file mode 100755 index c64a5b5ef..000000000 --- a/scripts/sunrise-commit +++ /dev/null @@ -1,350 +0,0 @@ -#!/bin/bash -# sunrise-commit - Automates the Gentoo Sunrise Overlay commit process -# Released into the public domain - -source /sbin/functions.sh - -BLUE=$BRACKET -BOLD=$'\e[0;01m' -DARKGREEN=$'\e[32m' -GREEN=$GOOD -LIGHTBLUE=$HILITE -RED=$BAD -YELLOW=$WARN - -commit_category="$(pwd | awk -F/ '{ print $(NF-1) }')" -commit_package="$(pwd | awk -F/ '{ print $NF }')" -current_svn_status=( ) -cwd_is_ebuild_dir=0 -items_added=( ) -items_conflicted=( ) -items_deleted=( ) -items_ignored=( ) -items_missing=( ) -items_modified=( ) -items_not_modified=( ) -items_not_version_controlled=( ) -items_obstructed=( ) -items_replaced=( ) -items_used_by_externals=( ) -num_new_dirs=0 -opt_changelog=0 -opt_noformat=0 -opt_norepoman=0 -opt_noupdate=0 -opt_quiet=0 -opt_verbose=0 - -changelog_append() { - if [[ $opt_changelog == 1 ]] ; then - get_current_svn_status - if [[ "${current_svn_status[*]}" =~ 'ChangeLog' ]] ; then - echo "!!! Error: Only one ChangeLog entry should be made per commit, and you have" - echo "!!! already modified your ChangeLog locally since your last commit. To keep the" - echo "!!! pre-existing modifications please run sunrise-commit again without the -c" - echo "!!! option. To discard the pre-existing modifications run:" - echo "!!! svn revert ChangeLog" - echo "!!!" - echo -n "!!! " - echo -n "${BOLD}Are you SURE you want to append to ChangeLog?${NORMAL} [${GREEN}No${NORMAL}/${RED}Yes${NORMAL}] " - read choice - echo - case "$choice" in - yes|Yes|YES) - ;; - - n*|N*|"") - echo "Aborting. Run sunrise-commit without the -c this time around." - exit 1 ;; - - *) - echo "Unrecognized response - assuming no." - echo "Aborting. Run sunrise-commit without the -c this time around." - exit 1 ;; - esac - fi - ebegin "Appending/creating ChangeLog" - [ -e $(dirname $0)/echangelog ] && ec="$(dirname $0)/echangelog" || ec="echangelog" - $ec "$*" - eend $? - fi -} - -create_digests() { - if [[ $cwd_is_ebuild_dir == 1 ]] ; then - ebegin "Digesting ebuilds" - for i in *.ebuild ; do - ebuild $i digest - done - eend $? - fi -} - -# Sort current changed items into arrays based on symbols in `svn status` -# output. For now we're only concerned with the symbols in the first column of -# the output. See `svn help status` for symbol definitions. -# -# Returns with exit status 1 if the current dir isn't under version control. -get_current_svn_status() { - local IFS_SAVED="$IFS" - local item column_1 #column_2 column_3 column_4 column_5 column_6 - IFS=$'\n' - current_svn_status=( ) - items_added=( ) - items_conflicted=( ) - items_deleted=( ) - items_ignored=( ) - items_missing=( ) - items_modified=( ) - items_not_modified=( ) - items_not_version_controlled=( ) - items_obstructed=( ) - items_replaced=( ) - items_used_by_externals=( ) - for line in $(svn status 2>&1) ; do - [[ "$line" =~ 'is not a working copy' ]] && return 1 - current_svn_status[${#current_svn_status[*]}]=$line - column_1=${line:0:1} - #column_2=${line:1:1} - #column_3=${line:2:1} - #column_4=${line:3:1} - #column_5=${line:4:1} - #column_6=${line:5:1} - item=${line:7} - case $column_1 in - ' ') items_not_modified[${#items_not_modified[*]}]=$item ;; - A) items_added[${#items_added[*]}]=$item ;; - C) items_conflicted[${#items_conflicted[*]}]=$item ;; - D) items_deleted[${#items_deleted[*]}]=$item ;; - I) items_ignored[${#items_ignored[*]}]=$item ;; - M) items_modified[${#items_modified[*]}]=$item ;; - R) items_replaced[${#items_replaced[*]}]=$item ;; - X) items_used_by_externals[${#items_used_by_externals[*]}]=$item ;; - !) items_missing[${#items_missing[*]}]=$item ;; - ?) items_not_version_controlled[${#items_not_version_controlled[*]}]=$item ;; - ~) items_obstructed[${#items_obstructed[*]}]=$item ;; - esac - done - IFS="$IFS_SAVED" -} - -repoman_check() { - if [[ $opt_norepoman == 0 ]] ; then - if [[ $cwd_is_ebuild_dir == 1 ]] ; then - ebegin "Running repoman" - export PORTDIR_OVERLAY="$(dirname $(dirname $(pwd)))" - repoman - eend $? - fi - fi -} - -svn_add() { - local num_unversioned_dirs=0 - - while ! get_current_svn_status ; do - (( num_unversioned_dirs++ )) - pushd .. >/dev/null - done - - ebegin "Adding local changes to working copy" - if [[ ${#items_not_version_controlled[*]} > 0 ]] ; then - if [[ $opt_verbose == 1 ]] ; then - svn add "${items_not_version_controlled[@]}" || set $? - else - svn add -q "${items_not_version_controlled[@]}" || set $? - fi - fi - eend ${1:-0} - - num_new_dirs=$num_unversioned_dirs - - for (( i=num_unversioned_dirs ; i > 0 ; i-- )) ; do - popd >/dev/null - done - - return ${1:-0} -} - -svn_commit() { - local commit_message="$*" - - get_current_svn_status - if [[ ${#current_svn_status[*]} == 0 ]] ; then - echo "!!! Error: No working copy changes found in current directory. Aborting commit." - exit 1 - fi - - if [[ $opt_noformat == 0 ]] ; then - if [[ $cwd_is_ebuild_dir == 1 ]] ; then - commit_message="${commit_category}/${commit_package}: ${commit_message}" - else - commit_message="${commit_package}/${current_svn_status[0]:7}: ${commit_message}" - fi - fi - - for (( i=num_new_dirs ; i > 0 ; i-- )) ; do - cd .. - done - - echo - echo "${DARKGREEN}The following local changes will be committed to the repository:${NORMAL}" - echo - - get_current_svn_status - for item in "${current_svn_status[@]}" ; do - echo "$item" - done - - echo - echo "${DARKGREEN}The following commit message will be used:${NORMAL}" - echo - echo "$commit_message" - - if [[ $opt_quiet == 0 ]] ; then - echo - echo -n "${BOLD}Commit changes?${NORMAL} [${GREEN}Yes${NORMAL}/${RED}No${NORMAL}] " - read choice - echo - - case "$choice" in - y*|Y*|"") - ;; - - *) - echo "Quitting." - echo - return 1 ;; - esac - fi - - ebegin "Committing working copy to repository" - svn commit -m "$commit_message" - eend $? -} - -svn_up() { - if [[ $opt_noupdate == 0 ]] ; then - for (( i=num_new_dirs ; i > 0 ; i-- )) ; do - pushd .. >/dev/null - done - - ebegin "Updating working copy to latest version from repository" - - if [[ $opt_verbose == 1 ]] ; then - svn update || set $? - else - svn update -q || set $? - fi - - eend ${1:-0} - - for (( i=num_new_dirs ; i > 0 ; i-- )) ; do - popd >/dev/null - done - - get_current_svn_status - if [[ ${#items_conflicted[*]} > 0 ]] ; then - echo "!!! Error: Some local items have changes that conflict with the repository." - echo "!!! Please contact the most recent committer(s) of these items and resolve the" - echo "!!! conflicts manually before running sunrise-commit again:" - for item in "${items_conflicted[@]}" ; do - echo "!!!" - echo "!!! item: ${item}" - echo "!!! committer: $(svn info ${item} | sed -rn 's/Last Changed Author\: (.*)$/\1/p')" - done - exit 1 - fi - fi - return ${1:-0} -} - -usage() { -cat << EOF -${BOLD}Usage:${NORMAL} ${LIGHTBLUE}sunrise-commit${NORMAL} [ ${GREEN}options${NORMAL} ] ${BLUE}message${NORMAL} - -${GREEN}options${NORMAL}: - ${BOLD}--changelog, -c${NORMAL} Create a ChangeLog entry using ${BLUE}message${NORMAL} - ${BOLD}--help, -h${NORMAL} Show help - ${BOLD}--noformat, -m${NORMAL} Disable automatic formatting of ${BLUE}message${NORMAL} - ${BOLD}--norepoman, -p${NORMAL} Skip repoman check - ${BOLD}--noupdate, -d${NORMAL} Don't update from repository before committing - ${BOLD}--quiet, -q${NORMAL} Don't ask for confirmation - ${BOLD}--verbose, -v${NORMAL} Show detailed information during commit - -${BLUE}message${NORMAL}: - Commit message describing changes and listing names/emails of anyone (other - than the commiter) who contributed. -EOF - exit ${1:-0} -} - -[[ -z "$1" ]] && usage 1 - -while [[ $# > 0 ]] ; do - case "$1" in - --changelog|-c) - if [[ -z "$ECHANGELOG_USER" ]] ; then - echo "!!! Error: --changelog option requires ECHANGELOG_USER to be set:" - echo "!!! export ECHANGELOG_USER=\"Your Name <your@mail.org>\"" - exit 1 - fi - opt_changelog=1 - shift ;; - - --help|-h) - usage ;; - - --noformat|-m) - opt_noformat=1 - shift ;; - - --norepoman|-p) - opt_norepoman=1 - shift ;; - - --noupdate|-d) - opt_noupdate=1 - shift ;; - - --quiet|-q) - opt_quiet=1 - shift ;; - - --verbose|-v) - opt_verbose=1 - shift ;; - - -*) - echo "!!! Error: Unknown option ${1}. See: sunrise-commit -h" - exit 1 ;; - - *) - break ;; - esac -done - -if [[ -z "$*" ]] ; then - echo "!!! Error: You must supply a commit message. See: sunrise-commit -h" - exit 1 -fi - -[[ "$(ls)" =~ '\.ebuild' ]] && cwd_is_ebuild_dir=1 - -pushd . >/dev/null -while [[ "$(echo `svn status 2>&1`)" =~ 'A.+? \.' ]] ; do - (( num_new_dirs++ )) - cd .. -done -popd >/dev/null - -svn_up || exit $? - -[[ $cwd_is_ebuild_dir == 1 && ! -e metadata.xml ]] && cp ../../skel.metadata.xml metadata.xml >/dev/null 2>&1 - -svn_add || exit $? -changelog_append "$*" || exit $? -create_digests || exit $? -svn_add || exit $? -repoman_check || exit $? -svn_commit "$*" || exit $? |