chiark / gitweb /
Merge commit 'refs/top-bases/fixes/ensure-worktree' into fixes/ensure-worktree
[topgit.git] / hooks / pre-commit.sh
index b6361c52a024e58721ddda8275f3a7d56ce524f5..9519560d5d2dbcd23bae941a6fe08f81e059688f 100644 (file)
@@ -78,6 +78,9 @@ BEGIN      { in_hunk = 0; }
 /^[^@ +-]/ { in_hunk = 0; }
 ' |
        while read newly_added; do
+               ref_exists "$newly_added" ||
+                       die "Invalid branch as dependent: $newly_added"
+
                # check for self as dep
                [ "$head_" != "$newly_added" ] ||
                        die "Can't have myself as dep"
@@ -91,5 +94,13 @@ BEGIN      { in_hunk = 0; }
                no_remotes=1 recurse_deps check_cycle_name "$newly_added"
        done
 
-
-# TODO: Verify .topdeps for valid branch names
+# check for repetitions of deps
+depdir="$(get_temp tg-depdir -d)" ||
+       die "Can't check for multiple occurrences of deps"
+cat_file "$head_:.topdeps" -i |
+       while read dep; do
+               [ ! -d "$depdir/$dep" ] ||
+                       die "Multiple occurrences of the same dep: $dep"
+               mkdir -p "$depdir/$dep" ||
+                       die "Can't check for multiple occurrences of deps"
+       done