All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Matthieu Moy <Matthieu.Moy@imag.fr>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v3] More friendly message when locking the index fails.
Date: Fri, 06 Feb 2009 16:37:46 -0800	[thread overview]
Message-ID: <7v63jn13qd.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <1233932964-22969-1-git-send-email-Matthieu.Moy@imag.fr> (Matthieu Moy's message of "Fri, 6 Feb 2009 16:09:24 +0100")

Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> Just saying that index.lock exists doesn't tell the user _what_ to do
> to fix the problem. We should give an indication that it's normally
> safe to delete index.lock after making sure git isn't running here.
>
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
> ---
> Oops, I hadn't noticed, but the previous version triggered a warning
> because of lack of braces on the if. Sorry.

Perhaps it is a good idea to introduce

NORETURN void unable_to_lock_index_die(const char *path, int err)
{
	if (err == EEXIST)
	        die(...);
 	else
        	die(...);
}

in lockfile.c and call it from these two places you are touching?

>  builtin-update-index.c |   12 ++++++++++--
>  lockfile.c             |   13 +++++++++++--
>  2 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/builtin-update-index.c b/builtin-update-index.c
> index 5604977..23b97db 100644
> --- a/builtin-update-index.c
> +++ b/builtin-update-index.c
> @@ -742,8 +742,16 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
>  		if (newfd < 0) {
>  			if (refresh_flags & REFRESH_QUIET)
>  				exit(128);
> -			die("unable to create '%s.lock': %s",
> -			    get_index_file(), strerror(lock_error));
> +			if (lock_error == EEXIST) {
> +				die("Unable to create '%s.lock': %s.\n\n"
> +				    "If no other git process is currently running, this probably means a\n"
> +				    "git process crashed in this repository earlier. Make sure no other git\n"
> +				    "process is running and remove the file manually to continue.",
> +				    get_index_file(), strerror(lock_error));
> +			} else {
> +				die("Unable to create '%s.lock': %s",
> +				    get_index_file(), strerror(lock_error));
> +			}
>  		}
>  		if (write_cache(newfd, active_cache, active_nr) ||
>  		    commit_locked_index(lock_file))
> diff --git a/lockfile.c b/lockfile.c
> index 021c337..c812596 100644
> --- a/lockfile.c
> +++ b/lockfile.c
> @@ -158,8 +158,17 @@ static int lock_file(struct lock_file *lk, const char *path, int flags)
>  int hold_lock_file_for_update(struct lock_file *lk, const char *path, int flags)
>  {
>  	int fd = lock_file(lk, path, flags);
> -	if (fd < 0 && (flags & LOCK_DIE_ON_ERROR))
> -		die("unable to create '%s.lock': %s", path, strerror(errno));
> +	if (fd < 0 && (flags & LOCK_DIE_ON_ERROR)) {
> +		if (errno == EEXIST) {
> +			die("Unable to create '%s.lock': %s.\n\n"
> +			    "If no other git process is currently running, this probably means a\n"
> +			    "git process crashed in this repository earlier. Make sure no other git\n"
> +			    "process is running and remove the file manually to continue.",
> +			    path, strerror(errno));
> +		} else {
> +			die("Unable to create '%s.lock': %s", path, strerror(errno));
> +		}
> +	}
>  	return fd;
>  }
>  
> -- 
> 1.6.1.2.351.g80eb2.dirty
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2009-02-07  0:39 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-04  8:36 Recovering the index after a git crash? Matthieu Moy
2009-02-04  9:58 ` [PATCH/RFC] More friendly message when locking the index fails Matthieu Moy
2009-02-04 11:50   ` Sverre Rabbelier
2009-02-06 13:38 ` Recovering the index after a git crash? Mikael Magnusson
2009-02-06 14:36 ` [PATCH] More friendly message when locking the index fails Matthieu Moy
2009-02-06 15:09   ` [PATCH v3] " Matthieu Moy
2009-02-07  0:37     ` Junio C Hamano [this message]
2009-02-19 12:54       ` [PATCH] " Matthieu Moy
2009-02-19 14:12         ` Sverre Rabbelier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7v63jn13qd.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Matthieu.Moy@imag.fr \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.