Merge branch 'jc/ident'
authorJunio C Hamano <junkio@cox.net>
Sat, 18 Feb 2006 09:24:54 +0000 (01:24 -0800)
committerJunio C Hamano <junkio@cox.net>
Sat, 18 Feb 2006 09:24:54 +0000 (01:24 -0800)
* jc/ident:
  Make "empty ident" error message a bit more helpful.
  Merge branch 'jc/topo'
  Merge branch 'jc/rebase-limit'
  gitview: typofix
  git-svn: remove files from the index before adding/updating

contrib/git-svn/git-svn
contrib/gitview/gitview.txt
ident.c

index 2caf057..71a8b3b 100755 (executable)
@@ -580,13 +580,12 @@ sub svn_info {
 sub sys { system(@_) == 0 or croak $? }
 
 sub git_addremove {
-       system( "git-ls-files -z --others ".
+       system( "git-diff-files --name-only -z ".
+                               " | git-update-index --remove -z --stdin; ".
+               "git-ls-files -z --others ".
                        "'--exclude-from=$GIT_DIR/$GIT_SVN/info/exclude'".
-                               "| git-update-index --add -z --stdin; ".
-               "git-ls-files -z --deleted ".
-                               "| git-update-index --remove -z --stdin; ".
-               "git-ls-files -z --modified".
-                               "| git-update-index -z --stdin") == 0 or croak $?
+                               " | git-update-index --add -z --stdin; "
+               ) == 0 or croak $?
 }
 
 sub s_to_file {
index 171295a..fcf759c 100644 (file)
@@ -32,7 +32,7 @@ EXAMPLES
          Show as the changes since version v2.6.12 that changed any file in the include/scsi
          or drivers/scsi subdirectories
 
-       gitk --since=2.weeks.ago
+       gitview --since=2.weeks.ago
          Show the changes during the last two weeks 
 
        
diff --git a/ident.c b/ident.c
index 23b8cfc..09d4d71 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -46,6 +46,15 @@ static void copy_gecos(struct passwd *w, char *name, int sz)
 
 }
 
+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)