Add assignment1 draft
This commit is contained in:
181
assignment1/lit-test
Executable file
181
assignment1/lit-test
Executable file
@@ -0,0 +1,181 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
readonly TEST_DIR=$(mktemp --tmpdir --directory lit-test.XXXXXX)
|
||||
|
||||
echo "== Using $TEST_DIR"
|
||||
pushd "$TEST_DIR"
|
||||
|
||||
echo "== Initializing repository"
|
||||
lit init
|
||||
|
||||
echo "== Creating the first commit"
|
||||
cat >file1 <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
EOF
|
||||
|
||||
# Let's check the status. Should look something like this:
|
||||
# Changes:
|
||||
# Add file1
|
||||
lit status
|
||||
|
||||
# We expect the first commit to be identified as r0.
|
||||
lit commit "Add file1"
|
||||
|
||||
echo "== Creating more commits"
|
||||
echo >>file1 "A third line is added to the first file."
|
||||
|
||||
# Let's check the status again, just to be sure.
|
||||
lit status
|
||||
|
||||
# This one would be r1.
|
||||
lit commit "Extend file1"
|
||||
|
||||
echo >>file1 "A forth line is added."
|
||||
|
||||
# This should be r2.
|
||||
lit commit "Extend file1 even further"
|
||||
|
||||
echo "== Displaying graph"
|
||||
# o < r2 Extend file1 even further
|
||||
# o r1 Extend file1
|
||||
# o r0 Add file1
|
||||
lit log
|
||||
|
||||
echo "== Switching to r0"
|
||||
lit checkout r0
|
||||
|
||||
# Checking the file content.
|
||||
diff -s file1 - <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
EOF
|
||||
|
||||
echo "== Switching back to r2"
|
||||
lit checkout r2
|
||||
|
||||
# Checking the file content again.
|
||||
diff -s file1 - <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
A third line is added to the first file.
|
||||
A forth line is added.
|
||||
EOF
|
||||
|
||||
echo "== Adding and discarding changes"
|
||||
echo >>file1 "This fifth line should be gone in an instant."
|
||||
lit checkout
|
||||
|
||||
# Let's confirm.
|
||||
diff -s file1 - <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
A third line is added to the first file.
|
||||
A forth line is added.
|
||||
EOF
|
||||
|
||||
echo "== Creating another branch"
|
||||
lit checkout r0
|
||||
mkdir subfolder
|
||||
cat >subfolder/file2 <<-EOF
|
||||
This is the first line of the second file.
|
||||
And another line in the second file.
|
||||
EOF
|
||||
|
||||
# This should be r3.
|
||||
lit commit "Add file2"
|
||||
|
||||
# o < r3 Add file2
|
||||
# │ o r2 Extend file1 even further
|
||||
# │ o r1 Extend file1
|
||||
# o─┘ r0 Add file1
|
||||
lit log
|
||||
|
||||
echo "== Going back"
|
||||
lit checkout r2
|
||||
|
||||
# file2 should be gone.
|
||||
test ! -f subfolder/file2
|
||||
|
||||
echo "== Merging (no conflict)"
|
||||
|
||||
# This creates a merge commit r4.
|
||||
lit merge r3
|
||||
|
||||
# file2 should now be present.
|
||||
diff -s subfolder/file2 <<-EOF
|
||||
This is the first line of the second file.
|
||||
And another line in the second file.
|
||||
EOF
|
||||
|
||||
# o─┐ < r4 Merge r3 into r2
|
||||
# │ o r3 Add file2
|
||||
# o │ r2 Extend file1 even further
|
||||
# o │ r1 Extend file1
|
||||
# o─┘ r0 Add file1
|
||||
lit log
|
||||
|
||||
echo "== Setting up a conflict"
|
||||
echo >>file1 "Fifth line ontop of r4."
|
||||
lit commit "Extend file1 one way" # r5
|
||||
|
||||
lit checkout r3
|
||||
echo >>file1 "Third line ontop of r3."
|
||||
lit commit "Extend file1 another way" # r6
|
||||
|
||||
# o < r6 Extend file1 another way
|
||||
# o │ r5 Extend file1 one way
|
||||
# o─┤ r4 Merge r3 into r2
|
||||
# │ o r3 Add file2
|
||||
# o │ r2 Extend file1 even further
|
||||
# o │ r1 Extend file1
|
||||
# o─┘ r0 Add file1
|
||||
lit log
|
||||
|
||||
# Going back and merging.
|
||||
lit checkout r5
|
||||
lit merge r6 || true
|
||||
|
||||
# Let's check all file versions:
|
||||
# Current commit
|
||||
diff -s file1 - <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
A third line is added to the first file.
|
||||
A forth line is added.
|
||||
Fifth line ontop of r4.
|
||||
EOF
|
||||
|
||||
# other breanch
|
||||
diff -s file1.r6 - <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
Third line ontop of r3.
|
||||
EOF
|
||||
|
||||
# common base
|
||||
diff -s file1.r3 - <<-EOF
|
||||
This is the first line of the first file. 🚀
|
||||
This is the second line of the first file.
|
||||
EOF
|
||||
|
||||
# To resolve the conflict, we simply take the version of the current commit.
|
||||
rm file1.r6 file1.r3
|
||||
|
||||
lit commit # r7
|
||||
|
||||
# o─┐ < r7 Merge r6 into r5
|
||||
# │ o r6 Extend file1 another way
|
||||
# o │ r5 Extend file1 one way
|
||||
# o─┤ r4 Merge r3 into r2
|
||||
# │ o r3 Add file2
|
||||
# o │ r2 Extend file1 even further
|
||||
# o │ r1 Extend file1
|
||||
# o─┘ r0 Add file1
|
||||
lit log
|
||||
|
||||
echo "== Cleanup"
|
||||
popd
|
||||
rm -r "$TEST_DIR"
|
Reference in New Issue
Block a user