* [RFC] empty ident? @ 2006-02-18 8:44 Junio C Hamano 2006-02-18 10:00 ` Nicolas Vilz 'niv' 2006-02-18 17:27 ` [PATCH] Nice error message for empty idents Petr Baudis 0 siblings, 2 replies; 5+ messages in thread From: Junio C Hamano @ 2006-02-18 8:44 UTC (permalink / raw To: git It appears that some people who did not care about having bogus names in their own commit messages are bitten by the recent change to require a sane environment [*1*]. While it was a good idea to prevent people from using bogus names to create commits and doing sign-offs, the error message is not very informative. This patch attempts to warn things upfront and hint people how to fix their environments. Likes, dislikes, don't cares? [Footnote] *1* The thread is this one. http://marc.theaimsgroup.com/?t=113868084800004 Especially this message. http://marc.theaimsgroup.com/?m=113932830015032 --- diff --git a/ident.c b/ident.c index 23b8cfc..09d4d71 100644 --- a/ident.c +++ b/ident.c @@ -46,6 +46,15 @@ static void copy_gecos(struct passwd *w, } +static const char au_env[] = "GIT_AUTHOR_NAME"; +static const char co_env[] = "GIT_COMMITTER_NAME"; +static const char env_hint[] = +"\n*** Environment problem:\n" +"*** Your name cannot be determined from your system services (gecos).\n" +"*** You would need to set %s and %s\n" +"*** environment variables; otherwise you won't be able to perform\n" +"*** certain operations because of \"empty ident\" errors.\n\n"; + int setup_ident(void) { int len; @@ -57,6 +66,11 @@ int setup_ident(void) /* Get the name ("gecos") */ copy_gecos(pw, git_default_name, sizeof(git_default_name)); + if (!*git_default_name) { + if (!getenv(au_env) || !getenv(co_env)) + fprintf(stderr, env_hint, au_env, co_env); + } + /* Make up a fake email address (name + '@' + hostname [+ '.' + domainname]) */ len = strlen(pw->pw_name); if (len > sizeof(git_default_email)/2) ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [RFC] empty ident? 2006-02-18 8:44 [RFC] empty ident? Junio C Hamano @ 2006-02-18 10:00 ` Nicolas Vilz 'niv' 2006-02-18 17:27 ` [PATCH] Nice error message for empty idents Petr Baudis 1 sibling, 0 replies; 5+ messages in thread From: Nicolas Vilz 'niv' @ 2006-02-18 10:00 UTC (permalink / raw To: git [-- Attachment #1: Type: text/plain, Size: 790 bytes --] Junio C Hamano wrote: > It appears that some people who did not care about having bogus > names in their own commit messages are bitten by the recent > change to require a sane environment [*1*]. > > While it was a good idea to prevent people from using bogus > names to create commits and doing sign-offs, the error message > is not very informative. This patch attempts to warn things > upfront and hint people how to fix their environments. Mh... it made me not using cg-init, but git-init, and after that editing .git/config, before the first commit. This doesn't apply to works with git-svn, because here imported commits are tailored from the base-uuid of the SVN repository and the commit-user. niv <niv@$uuid> after that i can setup my .git/config, as well. Sincerly Nicolas [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 256 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] Nice error message for empty idents 2006-02-18 8:44 [RFC] empty ident? Junio C Hamano 2006-02-18 10:00 ` Nicolas Vilz 'niv' @ 2006-02-18 17:27 ` Petr Baudis 2006-02-18 18:55 ` Junio C Hamano 2006-02-19 4:56 ` [PATCH] Delay "empty ident" errors until they really matter Junio C Hamano 1 sibling, 2 replies; 5+ messages in thread From: Petr Baudis @ 2006-02-18 17:27 UTC (permalink / raw To: Junio C Hamano; +Cc: git Dear diary, on Sat, Feb 18, 2006 at 09:44:14AM CET, I got a letter where Junio C Hamano <junkio@cox.net> said that... > It appears that some people who did not care about having bogus > names in their own commit messages are bitten by the recent > change to require a sane environment [*1*]. > > While it was a good idea to prevent people from using bogus > names to create commits and doing sign-offs, the error message > is not very informative. This patch attempts to warn things > upfront and hint people how to fix their environments. > > Likes, dislikes, don't cares? One dislike from me - you shouldn't care if you ain't gonna do it - it makes no sense to require valid gecos if you are never committing anything. Note that this "premature requirement" plague has already hit GIT - come on: $ git-rev-list --help fatal: Not a git repository That's worse than CVS (which allows cvs --help cmd but not cvs cmd --help outside of a repository). I agree that the error message itself is bad. --- [PATCH] Nice error message for empty idents Signed-off-by: Petr Baudis <pasky@suse.cz> --- commit 19b5bda8f0301ed4b856c5cd9137637b89d95d30 tree 8f91bfd101c32f258c3d8cca467eb7be26d62b91 parent 8dcc626cd144b2c6eae2a299242bbbe905cb0059 author Petr Baudis <pasky@suse.cz> Sat, 18 Feb 2006 18:26:32 +0100 committer Petr Baudis <xpasky@machine.or.cz> Sat, 18 Feb 2006 18:26:32 +0100 ident.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ident.c b/ident.c index 23b8cfc..c57ba5c 100644 --- a/ident.c +++ b/ident.c @@ -168,9 +168,10 @@ static const char *get_ident(const char if (!email) email = git_default_email; - if (!*name || !*email) - die("empty ident %s <%s> not allowed", - name, email); + if (!*name) + die("empty realname not allowed - please set a realname for your login or use GIT_AUTHOR_NAME"); + if (!*email) + die("empty email not allowed - please set your GIT_AUTHOR_EMAIL to a non-empty value"); strcpy(date, git_default_date); if (date_str) -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ Of the 3 great composers Mozart tells us what it's like to be human, Beethoven tells us what it's like to be Beethoven and Bach tells us what it's like to be the universe. -- Douglas Adams ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] Nice error message for empty idents 2006-02-18 17:27 ` [PATCH] Nice error message for empty idents Petr Baudis @ 2006-02-18 18:55 ` Junio C Hamano 2006-02-19 4:56 ` [PATCH] Delay "empty ident" errors until they really matter Junio C Hamano 1 sibling, 0 replies; 5+ messages in thread From: Junio C Hamano @ 2006-02-18 18:55 UTC (permalink / raw To: Petr Baudis; +Cc: git Petr Baudis <pasky@suse.cz> writes: > $ git-rev-list --help > fatal: Not a git repository Hmph, true. Ideas? > I agree that the error message itself is bad. > - if (!*name || !*email) > - die("empty ident %s <%s> not allowed", > - name, email); > + if (!*name) > + die("empty realname not allowed - please set a realname for your login or use GIT_AUTHOR_NAME"); > + if (!*email) > + die("empty email not allowed - please set your GIT_AUTHOR_EMAIL to a non-empty value"); I've considered doing this, but didn't do it that way, because I could not figure out what to do with GIT_COMMITTER_NAME. Also it might make sense to suggest user.name configuration item in the error/help message. Ideas? ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] Delay "empty ident" errors until they really matter. 2006-02-18 17:27 ` [PATCH] Nice error message for empty idents Petr Baudis 2006-02-18 18:55 ` Junio C Hamano @ 2006-02-19 4:56 ` Junio C Hamano 1 sibling, 0 replies; 5+ messages in thread From: Junio C Hamano @ 2006-02-19 4:56 UTC (permalink / raw To: git; +Cc: Petr Baudis Previous one warned people upfront to encourage fixing their environment early, but some people just use repositories and git tools read-only without making any changes, and in such a case there is not much point insisting on them having a usable ident. This round attempts to move the error until either "git-var" asks for the ident explicitly or "commit-tree" wants to use it. Signed-off-by: Junio C Hamano <junkio@cox.net> --- Petr Baudis <pasky@suse.cz> writes: > One dislike from me - you shouldn't care if you ain't gonna do it - it > makes no sense to require valid gecos if you are never committing > anything. You are absolutely right. This is to fix the previous one. cache.h | 4 ++-- commit-tree.c | 4 ++-- ident.c | 47 +++++++++++++++++++++++++---------------------- var.c | 6 +++--- 4 files changed, 32 insertions(+), 29 deletions(-) 749be728d469e9a0acfdc020feff17c2da510083 diff --git a/cache.h b/cache.h index b5db01f..da73fb3 100644 --- a/cache.h +++ b/cache.h @@ -246,8 +246,8 @@ void datestamp(char *buf, int bufsize); unsigned long approxidate(const char *); extern int setup_ident(void); -extern const char *git_author_info(void); -extern const char *git_committer_info(void); +extern const char *git_author_info(int); +extern const char *git_committer_info(int); struct checkout { const char *base_dir; diff --git a/commit-tree.c b/commit-tree.c index b1c8dca..88871b0 100644 --- a/commit-tree.c +++ b/commit-tree.c @@ -118,8 +118,8 @@ int main(int argc, char **argv) add_buffer(&buffer, &size, "parent %s\n", sha1_to_hex(parent_sha1[i])); /* Person/date information */ - add_buffer(&buffer, &size, "author %s\n", git_author_info()); - add_buffer(&buffer, &size, "committer %s\n\n", git_committer_info()); + add_buffer(&buffer, &size, "author %s\n", git_author_info(1)); + add_buffer(&buffer, &size, "committer %s\n\n", git_committer_info(1)); /* And add the comment */ while (fgets(comment, sizeof(comment), stdin) != NULL) diff --git a/ident.c b/ident.c index 09d4d71..7c81fe8 100644 --- a/ident.c +++ b/ident.c @@ -46,15 +46,6 @@ static void copy_gecos(struct passwd *w, } -static const char au_env[] = "GIT_AUTHOR_NAME"; -static const char co_env[] = "GIT_COMMITTER_NAME"; -static const char env_hint[] = -"\n*** Environment problem:\n" -"*** Your name cannot be determined from your system services (gecos).\n" -"*** You would need to set %s and %s\n" -"*** environment variables; otherwise you won't be able to perform\n" -"*** certain operations because of \"empty ident\" errors.\n\n"; - int setup_ident(void) { int len; @@ -66,11 +57,6 @@ int setup_ident(void) /* Get the name ("gecos") */ copy_gecos(pw, git_default_name, sizeof(git_default_name)); - if (!*git_default_name) { - if (!getenv(au_env) || !getenv(co_env)) - fprintf(stderr, env_hint, au_env, co_env); - } - /* Make up a fake email address (name + '@' + hostname [+ '.' + domainname]) */ len = strlen(pw->pw_name); if (len > sizeof(git_default_email)/2) @@ -170,8 +156,18 @@ static int copy(char *buf, int size, int return offset; } +static const char au_env[] = "GIT_AUTHOR_NAME"; +static const char co_env[] = "GIT_COMMITTER_NAME"; +static const char *env_hint = +"\n*** Environment problem:\n" +"*** Your name cannot be determined from your system services (gecos).\n" +"*** You would need to set %s and %s\n" +"*** environment variables; otherwise you won't be able to perform\n" +"*** certain operations because of \"empty ident\" errors.\n" +"*** Alternatively, you can use user.name configuration variable.\n\n"; + static const char *get_ident(const char *name, const char *email, - const char *date_str) + const char *date_str, int error_on_no_name) { static char buffer[1000]; char date[50]; @@ -182,9 +178,14 @@ static const char *get_ident(const char if (!email) email = git_default_email; - if (!*name || !*email) - die("empty ident %s <%s> not allowed", - name, email); + if (!*name) { + if (name == git_default_name && env_hint) { + fprintf(stderr, env_hint, au_env, co_env); + env_hint = NULL; /* warn only once, for "git-var -l" */ + } + if (error_on_no_name) + die("empty ident %s <%s> not allowed", name, email); + } strcpy(date, git_default_date); if (date_str) @@ -201,16 +202,18 @@ static const char *get_ident(const char return buffer; } -const char *git_author_info(void) +const char *git_author_info(int error_on_no_name) { return get_ident(getenv("GIT_AUTHOR_NAME"), getenv("GIT_AUTHOR_EMAIL"), - getenv("GIT_AUTHOR_DATE")); + getenv("GIT_AUTHOR_DATE"), + error_on_no_name); } -const char *git_committer_info(void) +const char *git_committer_info(int error_on_no_name) { return get_ident(getenv("GIT_COMMITTER_NAME"), getenv("GIT_COMMITTER_EMAIL"), - getenv("GIT_COMMITTER_DATE")); + getenv("GIT_COMMITTER_DATE"), + error_on_no_name); } diff --git a/var.c b/var.c index 59da56d..a57a33b 100644 --- a/var.c +++ b/var.c @@ -12,7 +12,7 @@ static const char var_usage[] = "git-var struct git_var { const char *name; - const char *(*read)(void); + const char *(*read)(int); }; static struct git_var git_vars[] = { { "GIT_COMMITTER_IDENT", git_committer_info }, @@ -24,7 +24,7 @@ static void list_vars(void) { struct git_var *ptr; for(ptr = git_vars; ptr->read; ptr++) { - printf("%s=%s\n", ptr->name, ptr->read()); + printf("%s=%s\n", ptr->name, ptr->read(0)); } } @@ -35,7 +35,7 @@ static const char *read_var(const char * val = NULL; for(ptr = git_vars; ptr->read; ptr++) { if (strcmp(var, ptr->name) == 0) { - val = ptr->read(); + val = ptr->read(1); break; } } -- 1.2.1.g2902 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-02-19 4:56 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-02-18 8:44 [RFC] empty ident? Junio C Hamano 2006-02-18 10:00 ` Nicolas Vilz 'niv' 2006-02-18 17:27 ` [PATCH] Nice error message for empty idents Petr Baudis 2006-02-18 18:55 ` Junio C Hamano 2006-02-19 4:56 ` [PATCH] Delay "empty ident" errors until they really matter Junio C Hamano
Code repositories for project(s) associated with this public inbox https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).