From 5cbc6057d2a2c7e00b466eb987acf04d68e1c18c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 2 Apr 2010 20:16:08 -0600 Subject: add a tree plugin to rvs, but I made a ton of other changes to get things working and facilitate this --- plugins/tree/bin/addparent.d.sh | 44 +++++++++++++++++++++++++++++++++++++++++ plugins/tree/bin/addparent.f.sh | 27 +++++++++++++++++++++++++ plugins/tree/bin/addparent.sh | 32 ++++++++++++++++++++++++++++++ plugins/tree/bin/delparent.f.sh | 34 +++++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 plugins/tree/bin/addparent.d.sh create mode 100644 plugins/tree/bin/addparent.f.sh create mode 100644 plugins/tree/bin/addparent.sh create mode 100644 plugins/tree/bin/delparent.f.sh (limited to 'plugins/tree/bin') diff --git a/plugins/tree/bin/addparent.d.sh b/plugins/tree/bin/addparent.d.sh new file mode 100644 index 0000000..ed21085 --- /dev/null +++ b/plugins/tree/bin/addparent.d.sh @@ -0,0 +1,44 @@ +#!/bin/sh +name='addparent.d' +ver=0.1 +# Copyright (C) 2010 Luke Shumaker +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. +# If not, see . + +usage="usage: $RVS $name CHILD PARENT" + child=${1?"$usage"} +parent=${2?"$usage"} + +tc="`mktemp`" +tp="`mktemp`" + +"$RVS" ls "$child" '%n %i' > "$tc" +"$RVS" ls "$parent" '%n %i' > "$tc" + +while read line; do + name="`echo "$line" | sed 's:\t[a-z]/[0-9a-f]$::'`" + nID="`echo "$line" | sed 's:^.*\t::'`" + oID="`sed -n 's:^${name/':'/'\:'}\t\([a-z]/[0-9a-f]\)$:\1:p'`" + + if [ -n "$oID" ] { + nT="`"$RVS" blob-gettype "$nID"`" + oT="`"$RVS" blob-gettype "$oID"`" + if [ "$nT" = "$oT" ]; then + "$RVS" addparent "$nID" "$oID" + fi + } +done < "$tc" + +"$RVS" addparent.f "$child" "$parent" diff --git a/plugins/tree/bin/addparent.f.sh b/plugins/tree/bin/addparent.f.sh new file mode 100644 index 0000000..61b4f92 --- /dev/null +++ b/plugins/tree/bin/addparent.f.sh @@ -0,0 +1,27 @@ +#!/bin/sh +name='addparent.f' +ver=0.1 +# Copyright (C) 2010 Luke Shumaker +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. +# If not, see . + +usage="usage: $RVS $name CHILD PARENT" + child=${1?"$usage"} +parent=${2?"$usage"} + +file="$REPO/tree/$child/$parent" +mkdir -p "`dirname "$file"`" +echo "$parent" > "$file" + diff --git a/plugins/tree/bin/addparent.sh b/plugins/tree/bin/addparent.sh new file mode 100644 index 0000000..af60e5a --- /dev/null +++ b/plugins/tree/bin/addparent.sh @@ -0,0 +1,32 @@ +#!/bin/sh +name='addparent' +ver=0.1 +# Copyright (C) 2010 Luke Shumaker +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. +# If not, see . + +usage="usage: $RVS $name CHILD PARENT" + child=${1?"$usage"} +parent=${2?"$usage"} + +ct="`"$RVS" blob-gettype "$child"`" +pt="`"$RVS" blob-gettype "$parent"`" + +if [ "$ct" = "$pt" ]; then + "$RVS" "addparent.$ct" "$child" "$parent" +else + error "CHILD and PARENT must be type of the same type" +fi + diff --git a/plugins/tree/bin/delparent.f.sh b/plugins/tree/bin/delparent.f.sh new file mode 100644 index 0000000..e53df9b --- /dev/null +++ b/plugins/tree/bin/delparent.f.sh @@ -0,0 +1,34 @@ +#!/bin/sh +name='delparent.f' +ver=0.1 +# Copyright (C) 2010 Luke Shumaker +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. +# If not, see . + +usage="usage: $RVS $name CHILD PARENT" + child=${1?"$usage"} +parent=${2?"$usage"} + +file="$REPO/tree/$child/$parent" +rm "$file" +if [ -z "$(ls "`dirname "$file"`")" ]; then + rmdir "`dirname "$file"`" +fi + + dir="$REPO/tree/$child" +if [ -z "$(ls "`dirname "$dir"`")" ]; then + rmdir "`dirname "$dir"`" +fi + -- cgit v1.2.3-54-g00ecf