blob: 01a9bf014fe2dfc3b641128cb7951adac39dd036 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
##
# systrunk checkout <version> [[<remote>] <path>]
#
# Reset a worktree to the state at <version>. If <path> is given,
# checkout also initializes a new worktree at the CWD. If <remote>
# is given, the path is assumed to be located on a remote machine
# and is contacted over SSH. While resetting to the state at
# <version>, all local uncommitted changes are lost.
#
# After checkout, BASE and TRAC will be set to <version>.
##
function systr_checkout
{
# check arguments #
if [ $# -lt 2 ]; then
echo "Missing required parameters"
exit
fi
# init worktree #
if [ $# -gt 2 ]; then
init_wktree $@
fi
# perform checkout #
read remote <.systr/remote
read path <.systr/path
version=$2
if [[ "$version" == "NULL" ]]; then
echo "Checking out NULL :: Checkout not performed"
exit
fi
commit=$(get_commit "$version")
symref=$(get_symref "$version")
echo "$commit" >.systr/BASE
echo "$symref" >.systr/TRAC
if [[ "$commit" == "NULL" ]]; then
echo "Nothing to checkout"
exit
fi
echo "Checking out files..."
# local repository #
if [[ "$remote" == "" ]]; then
rsync -az --info=progress2 --info=stats2 \
--delete --exclude='*.systr' \
"$path/$commit/" .
# remote repository #
else
rsync -az -e ssh --info=progress2 --info=stats2 \
--delete --exclude='*.systr' \
"$remote:$path/$commit/" .
fi
}
|