Hugues

Uptime 30 years, 7 months, 12 days, 0:07

~me CV Linux Moto Méca Photos Musique

Petit tour du propriétaire

Ma config Zsh n'est pas parfaite, elle peut même paraître trop lourde pour certains, mais avant de tourner la page, laissez-moi le temps de vous présenter ses avantages.

Dans la liste des inconvénients :


Quant aux avantages :

Git rebase in progress...

get_git_branch ()
{
	local my_git_branch checkouted_branch="yes"

	if [ ! -z "$DO_NOT_CHECK_GIT_BRANCH" ]
	then
		return
	fi

	[ "$( ( git-ls-files ; git-ls-tree HEAD . ) 2>&- | head -n1)" = ""
	-a \( ! -d .git -o "$(git-rev-parse --git-dir 2>&-)" != ".git" \)
	-a "$(git-rev-parse --is-inside-git-dir 2>&-)" != "true" ] && return 

	GIT_DIR=$(git-rev-parse --git-dir)

	# Get current working GIT branch
	my_git_branch="$(git-branch 2>&- | grep -E '^\* ' | cut -c3-)"

	if [ "$my_git_branch" != "" ]
	then
		# If not on a working GIT branch,
		# get the named current commit-ish inside parenthesis
		[ "$my_git_branch" = "(no branch)" ] &&\
			checkouted_branch="" && \
			my_git_branch="$(git-name-rev --name-only HEAD 2>&- |
				sed 's,^tags/,,;s,^remotes/,,;s,\^0$,,')"

		# If neither on a named commit-ish, show commit-id
		if [ "$my_git_branch" = "undefined" ]
		then
			my_git_branch="$(git-rev-parse --verify HEAD 2>&-)"
		fi
	else
		# Initial commit
		if [ -L $GIT_DIR/HEAD -a ! -f $GIT_DIR/HEAD ]
		then
			my_git_branch="$(basename $GIT_DIR/$(
				stat --printf="%N\n" $GIT_DIR/HEAD |
				tr '`' "'" | cut -d\' -f4))"
		else
			my_git_branch="$(basename $GIT_DIR/$(
				cat $GIT_DIR/HEAD |
				sed 's/^\([0-9a-f]\{2\}\)\([0-9a-f]\{38\}\)$/¬
						objects\/\1\/\2/;s/^ref: //'))"
		fi
	fi

	# Rebase in progress ?
	if [ -d $GIT_DIR/rebase-merge -o -d $GIT_DIR/rebase-apply ]
	then
		local rebase current last
		local REBASE_DIR

		if [ -d $GIT_DIR/rebase-merge ]
		then
			REBASE_DIR=$GIT_DIR/rebase-merge
		else
			REBASE_DIR=$GIT_DIR/rebase-apply
		fi

		if [ "$REBASE_DIR" = "$GIT_DIR/rebase-merge" ]
		then
			current=$(< $REBASE_DIR/done wc -l)
			last=$(( $current + $(
			< $REBASE_DIR/git-rebase-todo \
				grep -v "^#\|^[[:blank:]]*$" | wc -l) ))
			rebase=$rebase$rebase_in_progress": "
		else
			current=$(cat $REBASE_DIR/next)
			last=$(cat $REBASE_DIR/last)
		fi

		# Then the result
		my_git_branch="[rebase $current/$last: "$(
			git-name-rev --name-only $(
				cat $REBASE_DIR/onto))".."$my_git_branch"] "$(
				< $REBASE_DIR/head-name sed 's/^refs\///;s/^heads\///')
	else
		# No rebase in progress, put '(' ')' if needed
		[ ! "$checkouted_branch" ] && my_git_branch="($my_git_branch)"
	fi

	if [ "$(git-status 2>&- | grep "new file" | head -n1)" != "" ] ; then
		# ADDED FILES
		my_git_branch=$my_git_branch
	fi

	echo $my_git_branch
}

Git status : up-to-date ? added files ? clean ?

# We *must* have previously checked that
# we obtained a correct GIT branch with
# a call to `get_git_branch`
get_git_status ()
{
	local my_git_status cached not_up_to_date managment_folder

	if [ ! -z "$DO_NOT_CHECK_GIT_STATUS" ]
	then return
	fi

	if [ "$(git-rev-parse --is-inside-git-dir)" = "true"
	-o "$(git-config --get core.bare)" = "true" ] ; then
		echo "$git_colors[managment_folder]"
		return
	fi

	if   [ "$(git-diff --cached 2>&- | grep '^diff ' | head -n1 )" != "" ] ; then 
		cached="yes"
	fi
	if [ "$(git-ls-files -m 2>&- | head -n1)" != "" ] ; then 
		not_up_to_date="yes"
	fi

	GIT_DIR=$(git-rev-parse --git-dir 2>/dev/null)

	if [ "$cached" != "" -a "$not_up_to_date" != "" ] ; then
		my_git_status="$git_colors[cached_and_not_up_to_date]"
	elif [ "$cached" != "" ] ; then
		my_git_status="$git_colors[cached]"
	elif [ "$not_up_to_date" != "" ] ; then
		my_git_status="$git_colors[not_up_to_date]"
	elif [ "$(git-cat-file -t HEAD 2>/dev/null)" != "commit" ] ; then
		if [ ! -z "$(git-ls-files)" ] ; then
			my_git_status="$git_colors[cached]"
		else
			my_git_status="$git_colors[init_in_progress]"
		fi
	else
		my_git_status="$git_colors[up_to_date]"
	fi

	echo $my_git_status
}
Valid XHTML! Valid CSS! Creative Commons License Vim Powered RSS 2.0 Feed lock