aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorn-peugnet <n.peugnet@free.fr>2021-10-04 20:37:50 +0200
committern-peugnet <n.peugnet@free.fr>2021-10-04 20:37:50 +0200
commit6897c0ae70892e40fd7603e4d00662038c01a82d (patch)
treec116766c1eb4ccd0187a56860100752c63295d9e
parentb5842cb956aeac90bdf26a5ad26c86c594fe30ee (diff)
downloaddna-backup-6897c0ae70892e40fd7603e4d00662038c01a82d.tar.gz
dna-backup-6897c0ae70892e40fd7603e4d00662038c01a82d.zip
add checks for consistency
It works ok, but man, git is good
-rw-r--r--exp/Makefile11
-rwxr-xr-xexp/exp.sh30
2 files changed, 34 insertions, 7 deletions
diff --git a/exp/Makefile b/exp/Makefile
index a5b4864..aaf377c 100644
--- a/exp/Makefile
+++ b/exp/Makefile
@@ -1,6 +1,7 @@
REPO_URL := https://club1.fr/~nicolas/git/dna-backup/
-export MAX_VERSION ?= 3
+export DNA_BACKUP ?= ../dna-backup
+export MAX_VERSION ?= 5
export COMMITS ?= commits
export BACKUP ?= backup
export DIFFS ?= diffs
@@ -47,7 +48,7 @@ results: backup run
| sort -k2 \
> $@
-run: $(COMMITS) ../dna-backup | $(DATADIRS)
+run: $(COMMITS) $(DNA_BACKUP) | $(DATADIRS)
rm -rf $(DATADIRS:%=%/*)
./exp.sh
touch $@
@@ -55,8 +56,8 @@ run: $(COMMITS) ../dna-backup | $(DATADIRS)
backup diffs:
mkdir $@
-../dna-backup: .FORCE
- @$(MAKE) -C .. --no-print-directory dna-backup
+$(DNA_BACKUP): .FORCE
+ @$(MAKE) -C $(@D) --no-print-directory $(@F)
$(COMMITS): | repo git
$(GITC) log --reverse --no-merges --pretty=tformat:"%H %as" \
@@ -74,7 +75,7 @@ clean: mostlyclean
rm -f $(COMMITS)
mostlyclean: resultsclean
- rm -rf $(DATADIRS) versions
+ rm -rf $(DATADIRS) versions run
resultsclean:
rm -f results summary.csv $(SIZEFILES)
diff --git a/exp/exp.sh b/exp/exp.sh
index 9edf367..59a5ef1 100755
--- a/exp/exp.sh
+++ b/exp/exp.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# This script expects the following variables to be exported:
+# - DNA_BACKUP: the path to dna-backup binary
# - REPO_PATH: the path of the repo the experiment is based on
# - MAX_VERSION: the max number for versions for the experiment
# - COMMITS: the name of the file that contains the lists of versions
@@ -20,10 +21,35 @@ do
$GITC checkout $hash
# create diff for this version
- $GITC diff --minimal --binary --unified=0 $prev | gzip > $DIFFS/$i.diff.gz
+ $GITC diff --minimal --binary --unified=0 $prev \
+ | gzip \
+ > "$DIFFS/$i.diff.gz"
# create backup for this version
- ../dna-backup commit -v 2 $REPO_PATH $BACKUP
+ $DNA_BACKUP commit -v 2 $REPO_PATH $BACKUP
+
+ if [[ $(( $i % 4 )) == 0 ]]
+ then
+ # check diff correctness
+ TEMP=$(mktemp -d)
+ for n in $(seq 0 $i)
+ do
+ cat "$DIFFS/$n.diff.gz" \
+ | gzip --decompress \
+ | git -C $TEMP apply --binary --unidiff-zero --whitespace=nowarn - \
+ || echo "Git patchs do not match source"
+ done
+ cp $REPO_PATH/.git $TEMP/
+ diff --brief --recursive $REPO_PATH $TEMP \
+ || echo "dna-backup restore do not match source"
+ rm -rf $TEMP
+
+ # check backup correctness
+ TEMP=$(mktemp -d)
+ $DNA_BACKUP restore -v 2 $BACKUP $TEMP
+ diff --brief --recursive $REPO_PATH $TEMP
+ rm -rf $TEMP
+ fi
prev=$hash
let i++