#!/bin/sh
set -e

#DEBHELPER#

# /var/cache/git/ -> /var/lib/git/ transition
if test "$1" = upgrade &&
   dpkg --compare-versions "$2" lt-nl '1:1.8.4~rc0-1'; then
	mkdir -m 755 -p /var/lib/git
	(
		cd /var/lib/git
		for target in ../../cache/git/*; do
			if ! test -L "$target" && ! test -e "$target"; then
				continue
			fi

			link=${target#../../cache/git/}
			if ! test -L "$link" && ! test -e "$link"; then
				ln -s "$target" "$link"
			fi
		done
	)
fi

# A previous version of the /var/lib/git/ transition code
# left behind a symlink '/var/lib/git/*' -> '../../cache/git/*'.
if test "$1" = upgrade &&
   dpkg --compare-versions "$2" eq '1:1.8.4~rc0-1' &&
   test -L '/var/lib/git/*'; then
	target=$(readlink '/var/lib/git/*')
	if test "$target" = '../../cache/git/*'; then
		rm -f '/var/lib/git/*'
	fi
fi

# Git versions before 1.7.7-2 kept about 100 hard links to
# /usr/lib/git-core/git at /usr/lib/git-core/git-* to avoid
# wasting time resolving a symlink when old scripts call "git
# foo" as git-foo.  Btrfs doesn't like to have more than 130 or
# so links to a single inode in a given directory.  dpkg versions
# 1.16.1 and later temporarily double the number of hard links to
# an inode when upgrading a package.
#
# Replace the hard links with symlinks _before_ upgrading to
# avoid trouble.
#
# For added fun, coreutils mv will not replace a file by a
# symlink to the same inode (bug #654666).  We give
# /usr/lib/git-core/git its own inode to work around that.

if test "$1" = upgrade &&
   dpkg --compare-versions "$2" lt-nl '1:1.7.7-2'; then
	refinode=$(stat -c%i /usr/lib/git-core/git-add)

	rm -f /usr/lib/git-core/git.tmp
	cp -p /usr/lib/git-core/git /usr/lib/git-core/git.tmp
	mv -f /usr/lib/git-core/git.tmp /usr/lib/git-core/git
	for f in /usr/lib/git-core/*; do
		test "$f" != /usr/lib/git-core/git &&
		test "$f" != /usr/lib/git-core/git-add || continue
		rm -f "$f.tmp"
		inode=$(stat -c%i "$f")
		test "$inode" = "$refinode" || continue
		ln -s git "$f.tmp"
		mv -f "$f.tmp" "$f"
	done
fi
