From: Rudolf Polzer Date: Mon, 14 May 2012 15:26:45 +0000 (+0200) Subject: conflict watch script name X-Git-Tag: xonotic-v0.7.0~55^2~8 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8e6028b600b56f07f2d889ad81a19008485f283f;p=xonotic%2Fxonotic.git conflict watch script name --- diff --git a/misc/tools/conflict-rss.sh b/misc/tools/conflict-rss.sh deleted file mode 100755 index d20d44e0..00000000 --- a/misc/tools/conflict-rss.sh +++ /dev/null @@ -1,180 +0,0 @@ -#!/bin/sh - -set -e - -action=$1 -outdir=$2 -repodir=$3 - -branches() -{ - git for-each-ref 'refs/remotes' | grep -vE ' refs/remotes/([^/]*/HEAD|.*/archived/.*)$' -} - -escape_html() -{ - sed -e 's/&/\&/g; s//>/g' -} - -to_rss() -{ - outdir=$1 - name=$2 - masterhash=$3 - masterbranch=$4 - hash=$5 - branch=$6 - repo=$7 - - filename=`echo -n "$name" | tr -c 'A-Za-z0-9' '_'`.rss - outfilename="$outdir/$filename" - masterbranch=`echo -n "$masterbranch" | escape_html` - branch=`echo -n "$branch" | escape_html` - repo=`echo -n "$repo" | escape_html` - if [ -n "$repo" ]; then - repotxt=" in $repo" - else - repotxt= - fi - - if ! [ -f "$outfilename" ]; then - datetime=`date --rfc-2822` - cat >"$outfilename" < - - - XonCW: $name - http://git.xonotic.org/ - Xonotic Conflict Watch for branches by $name - 3600 - - $datetime -EOF - fi - cat >>"$outfilename" < - $branch$repotxt - http://git.xonotic.org/?p=$repo;a=shortlog;h=refs/heads/$branch - http://nl.git.xonotic.org/xoncw/$filename#$hash - " >>"$outfilename" - escape_html >>"$outfilename" - echo "" >>"$outfilename" - - cat >>"$outfilename" < - -EOF -} - -clear_rss() -{ - datetime=`date --rfc-2822` - sed -i -e '//,$d' "$1" - cat <>"$1" - $datetime -EOF -} - -finish_rss() -{ - cat <>"$1" - - -EOF -} - -if [ -z "$outdir" ]; then - set -- -fi - -repo=$( - ( - if [ -n "$repodir" ]; then - cd "$repodir" - fi - git config remote.origin.url | cut -d / -f 4- - ) -) - -case "$action" in - --init) - mkdir -p "$outdir" - for f in "$outdir"/*; do - [ -f "$f" ] || continue - clear_rss "$f" - done - ;; - --finish) - for f in "$outdir"/*; do - [ -f "$f" ] || continue - finish_rss "$f" - done - ;; - --add) - masterhash=$( - ( - if [ -n "$repodir" ]; then - cd "$repodir" - fi - git rev-parse HEAD - ) - ) - masterbranch=$( - ( - if [ -n "$repodir" ]; then - cd "$repodir" - fi - git symbolic-ref HEAD - ) - ) - masterbranch=${masterbranch#refs/heads/} - ( - if [ -n "$repodir" ]; then - cd "$repodir" - fi - branches - ) | while read -r HASH TYPE REFNAME; do - echo >&2 -n "$repo $REFNAME..." - out=$( - ( - if [ -n "$repodir" ]; then - cd "$repodir" - fi - git reset --hard "$masterhash" >/dev/null 2>&1 - if out=`git merge --no-commit -- "$REFNAME" 2>&1`; then - good=true - else - good=false - echo "$out" - fi - git reset --hard "$masterhash" >/dev/null 2>&1 - ) - ) - if [ -n "$out" ]; then - b=${REFNAME#refs/remotes/[^/]*/} - case "$b" in - */*) - n=${b%%/*} - ;; - *) - n=divVerent - ;; - esac - echo "$out" | to_rss "$outdir" "$n" "$masterhash" "$masterbranch" "$HASH" "$b" "$repo" - echo >&2 " CONFLICT" - else - echo >&2 " ok" - fi - done - ;; - *) - echo "Usage: $0 --init OUTDIR" - echo " $0 --add OUTDIR [REPODIR]" - echo " $0 --finish OUTDIR" - exit 1 - ;; -esac diff --git a/misc/tools/conflict-watch.sh b/misc/tools/conflict-watch.sh new file mode 100755 index 00000000..d20d44e0 --- /dev/null +++ b/misc/tools/conflict-watch.sh @@ -0,0 +1,180 @@ +#!/bin/sh + +set -e + +action=$1 +outdir=$2 +repodir=$3 + +branches() +{ + git for-each-ref 'refs/remotes' | grep -vE ' refs/remotes/([^/]*/HEAD|.*/archived/.*)$' +} + +escape_html() +{ + sed -e 's/&/\&/g; s//>/g' +} + +to_rss() +{ + outdir=$1 + name=$2 + masterhash=$3 + masterbranch=$4 + hash=$5 + branch=$6 + repo=$7 + + filename=`echo -n "$name" | tr -c 'A-Za-z0-9' '_'`.rss + outfilename="$outdir/$filename" + masterbranch=`echo -n "$masterbranch" | escape_html` + branch=`echo -n "$branch" | escape_html` + repo=`echo -n "$repo" | escape_html` + if [ -n "$repo" ]; then + repotxt=" in $repo" + else + repotxt= + fi + + if ! [ -f "$outfilename" ]; then + datetime=`date --rfc-2822` + cat >"$outfilename" < + + + XonCW: $name + http://git.xonotic.org/ + Xonotic Conflict Watch for branches by $name + 3600 + + $datetime +EOF + fi + cat >>"$outfilename" < + $branch$repotxt + http://git.xonotic.org/?p=$repo;a=shortlog;h=refs/heads/$branch + http://nl.git.xonotic.org/xoncw/$filename#$hash + " >>"$outfilename" + escape_html >>"$outfilename" + echo "" >>"$outfilename" + + cat >>"$outfilename" < + +EOF +} + +clear_rss() +{ + datetime=`date --rfc-2822` + sed -i -e '//,$d' "$1" + cat <>"$1" + $datetime +EOF +} + +finish_rss() +{ + cat <>"$1" + + +EOF +} + +if [ -z "$outdir" ]; then + set -- +fi + +repo=$( + ( + if [ -n "$repodir" ]; then + cd "$repodir" + fi + git config remote.origin.url | cut -d / -f 4- + ) +) + +case "$action" in + --init) + mkdir -p "$outdir" + for f in "$outdir"/*; do + [ -f "$f" ] || continue + clear_rss "$f" + done + ;; + --finish) + for f in "$outdir"/*; do + [ -f "$f" ] || continue + finish_rss "$f" + done + ;; + --add) + masterhash=$( + ( + if [ -n "$repodir" ]; then + cd "$repodir" + fi + git rev-parse HEAD + ) + ) + masterbranch=$( + ( + if [ -n "$repodir" ]; then + cd "$repodir" + fi + git symbolic-ref HEAD + ) + ) + masterbranch=${masterbranch#refs/heads/} + ( + if [ -n "$repodir" ]; then + cd "$repodir" + fi + branches + ) | while read -r HASH TYPE REFNAME; do + echo >&2 -n "$repo $REFNAME..." + out=$( + ( + if [ -n "$repodir" ]; then + cd "$repodir" + fi + git reset --hard "$masterhash" >/dev/null 2>&1 + if out=`git merge --no-commit -- "$REFNAME" 2>&1`; then + good=true + else + good=false + echo "$out" + fi + git reset --hard "$masterhash" >/dev/null 2>&1 + ) + ) + if [ -n "$out" ]; then + b=${REFNAME#refs/remotes/[^/]*/} + case "$b" in + */*) + n=${b%%/*} + ;; + *) + n=divVerent + ;; + esac + echo "$out" | to_rss "$outdir" "$n" "$masterhash" "$masterbranch" "$HASH" "$b" "$repo" + echo >&2 " CONFLICT" + else + echo >&2 " ok" + fi + done + ;; + *) + echo "Usage: $0 --init OUTDIR" + echo " $0 --add OUTDIR [REPODIR]" + echo " $0 --finish OUTDIR" + exit 1 + ;; +esac