chiark / gitweb /
Do basic error checking in "tg depend add"
authorPer Cederqvist <ceder@lysator.liu.se>
Mon, 6 Sep 2010 05:12:16 +0000 (07:12 +0200)
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 6 Sep 2010 05:18:20 +0000 (07:18 +0200)
Check for the following errors:

 - Working on a non-TopGit branch.
 - Adding a branch as a dependency of itself.
 - Adding a dependency that introduces a loop.
 - Adding a dependency that already exists.

Signed-off-by: Per Cederqvist <ceder@lysator.liu.se>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
tg-depend.sh

index 6d98b5f556f0e1622cc0cfd6297561e9e9255d38..474ccda4e098a2046a2e60a52d5addad4b007f81 100644 (file)
@@ -42,9 +42,24 @@ done
 branchrev="$(git rev-parse --verify "$name" 2>/dev/null)" ||
        die "invalid branch name: $name"
 
+# Check that we are on a TopGit branch.
+current_name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')"
+current_base_rev="$(git rev-parse --short --verify "refs/top-bases/$current_name" 2>/dev/null)" ||
+       die "not a TopGit-controlled branch"
+
 ## Record new dependency
 depend_add()
 {
+       [ "$name" = "$current_name" ] &&
+               die "$name cannot depend on itself."
+
+       { $tg summary --deps; echo "$current_name" "$name"; } |
+               tsort >/dev/null ||
+               die "tg: that dependency would introduce a dependency loop"
+
+       grep -F -x -e "$name" "$root_dir/.topdeps" >/dev/null &&
+               die "tg: $current_name already depends on $name"
+
        echo "$name" >>"$root_dir/.topdeps"
        git add -f "$root_dir/.topdeps"
        git commit -m"New TopGit dependency: $name"