#!/usr/bin/env bash
#
# Restore removed/changed files in the working tree.
# Copyright (c) Petr Baudis, 2005
#
# Restore given files to their original state. Without any parameters,
# it recovers any files removed locally whose removal was not recorded
# by `cg-rm`.
#
# If passed a set of file names, it restores those files to their
# state as of the last commit (including bringing files removed with
# `cg-rm` back to life; FIXME: does not do that part yet).
#
# This command is complementary to the `cg-cancel` command, which
# forcefully abandons all the changes in the working tree and
# restores everything to a proper state (including unseeking,
# cancelling merge in progress and rebuilding indexes).

USAGE="cg-restore [FILE]..."

. ${COGITO_LIB}cg-Xlib

ret=0

if [ "$1" ]; then
	while [ "$1" ]; do
		git-checkout-cache "$1" || ret=1
		shift
	done
else
	if [ "$(git-ls-files --deleted)" ]; then
		echo "Recovering files:"
		git-ls-files --deleted | sed "s/^/$(echo -e "\t")/"
	fi
	git-checkout-cache -q -a
fi

update_index || ret=1

exit $ret
