git
1#!/bin/sh
2
3do_filename() {4desc=$15postimage=$26
7rm -fr file-creation &&8git init file-creation &&9(10cd file-creation &&11git commit --allow-empty -m init &&12echo postimage >"$postimage" &&13git add -N "$postimage" &&14git diff HEAD >"../git-$desc.diff"15) &&16
17rm -fr trad-modification &&18mkdir trad-modification &&19(20cd trad-modification &&21echo preimage >"$postimage.orig" &&22echo postimage >"$postimage" &&23! diff -u "$postimage.orig" "$postimage" >"../diff-$desc.diff"24) &&25
26rm -fr trad-creation &&27mkdir trad-creation &&28(29cd trad-creation &&30mkdir a b &&31echo postimage >"b/$postimage" &&32! diff -pruN a b >"../add-$desc.diff"33)34}
35
36do_filename plain postimage.txt &&37do_filename 'with spaces' 'post image.txt' &&38do_filename 'with tab' 'post image.txt' &&39do_filename 'with backslash' 'post\image.txt' &&40do_filename 'with quote' '"postimage".txt' &&41expand add-plain.diff >damaged.diff ||42{
43echo >&2 Failed. &&44exit 145}
46