1. 30 5月, 2012 6 次提交
    • J
      Merge branch 'jk/ident-gecos-strbuf' · 261ec7d0
      Junio C Hamano 提交于
      Fixes quite a lot of brokenness when ident information needs to be taken
      from the system and cleans up the code.
      
      By Jeff King
      * jk/ident-gecos-strbuf: (22 commits)
        format-patch: do not use bogus email addresses in message ids
        ident: reject bogus email addresses with IDENT_STRICT
        ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT
        format-patch: use GIT_COMMITTER_EMAIL in message ids
        ident: let callers omit name with fmt_indent
        ident: refactor NO_DATE flag in fmt_ident
        ident: reword empty ident error message
        format-patch: refactor get_patch_filename
        ident: trim whitespace from default name/email
        ident: use a dynamic strbuf in fmt_ident
        ident: use full dns names to generate email addresses
        ident: report passwd errors with a more friendly message
        drop length limitations on gecos-derived names and emails
        ident: don't write fallback username into git_default_name
        fmt_ident: drop IDENT_WARN_ON_NO_NAME code
        format-patch: use default email for generating message ids
        ident: trim trailing newline from /etc/mailname
        move git_default_* variables to ident.c
        move identity config parsing to ident.c
        fmt-merge-msg: don't use static buffer in record_person
        ...
      261ec7d0
    • J
      Merge branch 'jk/fetch-pack-remove-dups-optim' · 12d7d150
      Junio C Hamano 提交于
      The way "fetch-pack" that is given multiple references to fetch tried to
      remove duplicates was very inefficient.
      
      By Jeff King
      * jk/fetch-pack-remove-dups-optim:
        fetch-pack: sort incoming heads list earlier
        fetch-pack: avoid quadratic loop in filter_refs
        fetch-pack: sort the list of incoming refs
        add sorting infrastructure for list refs
        fetch-pack: avoid quadratic behavior in remove_duplicates
        fetch-pack: sort incoming heads
      12d7d150
    • J
      Merge branch 'rs/refs-string-slice' · a7060009
      Junio C Hamano 提交于
      Avoid unnecessary temporary allocations while looking for matching refs
      inside refs API.
      
      By René Scharfe (3) and Junio C Hamano (1)
      * rs/refs-string-slice:
        refs: do not create ref_entry when searching
        refs: use strings directly in find_containing_dir()
        refs: convert parameter of create_dir_entry() to length-limited string
        refs: convert parameter of search_ref_dir() to length-limited string
      a7060009
    • J
      Merge branch 'mh/fetch-pack-constness' · 4dbfaee0
      Junio C Hamano 提交于
      Tighten constness of some local variables in a callchain.
      
      By Michael Haggerty
      * mh/fetch-pack-constness:
        cmd_fetch_pack(): respect constness of argv parameter
        cmd_fetch_pack(): combine the loop termination conditions
        cmd_fetch_pack(): handle non-option arguments outside of the loop
        cmd_fetch_pack(): declare dest to be const
      4dbfaee0
    • J
      Merge branch 'mh/ref-api-lazy-loose' · 38f2b874
      Junio C Hamano 提交于
      The code to lazily read loose refs unnecessarily read the refs in a
      subhierarchy by mistake when we free the data for the subhierarchy.
      
      By Michael Haggerty
      * mh/ref-api-lazy-loose:
        free_ref_entry(): do not trigger reading of loose refs
      38f2b874
    • J
      Merge branch 'ng/pack-objects-cleanup' · 32bd3a51
      Junio C Hamano 提交于
      By Nguyễn Thái Ngọc Duy
      * ng/pack-objects-cleanup:
        pack-objects: refactor write_object() into helper functions
        pack-objects, streaming: turn "xx >= big_file_threshold" to ".. > .."
      32bd3a51
  2. 26 5月, 2012 18 次提交
  3. 25 5月, 2012 14 次提交
    • J
      format-patch: do not use bogus email addresses in message ids · 59f9b8a9
      Jeff King 提交于
      We can ask git_committer_info to be strict about coming up
      with an email, which will die automatically on a poorly
      configured machine. This is better than letting invalid
      message-ids into the wild.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      59f9b8a9
    • J
      ident: reject bogus email addresses with IDENT_STRICT · 8c5b1ae1
      Jeff King 提交于
      If we come up with a hostname like "foo.(none)" because the
      user's machine is not fully qualified, we should reject this
      in strict mode (e.g., when we are making a commit object),
      just as we reject an empty gecos username.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8c5b1ae1
    • J
      Sync with maint · 5bc2dc29
      Junio C Hamano 提交于
      By Jeff King (1) and Junio C Hamano (1)
      * maint:
        Update draft release notes to 1.7.10.3
        osxkeychain: pull make config from top-level directory
      5bc2dc29
    • J
      Update draft release notes to 1.7.10.3 · c4649188
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c4649188
    • J
      Merge branch 'jk/maint-status-porcelain-z-b' into maint · a8bd582d
      Junio C Hamano 提交于
      "git status --porcelain" ignored "--branch" option by mistake.  The output
      for "git status --branch -z" was also incorrect and did not terminate the
      record for the current branch name with NUL as asked.
      
      By Jeff King
      * jk/maint-status-porcelain-z-b:
        status: respect "-b" for porcelain format
        status: fix null termination with "-b"
        status: refactor null_termination option
        commit: refactor option parsing
      a8bd582d
    • J
      ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT · f9bc573f
      Jeff King 提交于
      Callers who ask for ERROR_ON_NO_NAME are not so much
      concerned that the name will be blank (because, after all,
      we will fall back to using the username), but rather it is a
      check to make sure that low-quality identities do not end up
      in things like commit messages or emails (whereas it is OK
      for them to end up in things like reflogs).
      
      When future commits add more quality checks on the identity,
      each of these callers would want to use those checks, too.
      Rather than modify each of them later to add a new flag,
      let's refactor the flag.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f9bc573f
    • J
      format-patch: use GIT_COMMITTER_EMAIL in message ids · c73f384f
      Jeff King 提交于
      Before commit 43ae9f47, we generated the tail of a message id
      by calling git_committer_info and parsing the email out of
      the result. 43ae9f47 changed to use ident_default_email
      directly, so we didn't have to bother with parsing. As a
      side effect, it meant we no longer used GIT_COMMITTER_EMAIL
      at all.
      
      In general, this is probably reasonable behavior. Either the
      default email is sane on your system, or you are using
      user.email to provide something sane. The exception is if
      you rely on GIT_COMMITTER_EMAIL being set all the time to
      override the bogus generated email.
      
      This is unlikely to match anybody's real-life setup, but we
      do use it in the test environment. And furthermore, it's
      what we have always done, and the change in 43ae9f47 was
      about cleaning up, not fixing any bug; we should be
      conservative and keep the behavior identical.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c73f384f
    • J
      ident: let callers omit name with fmt_indent · c15e1987
      Jeff King 提交于
      Most callers want to see all of "$name <$email> $date", but
      a few want only limited parts, omitting the date, or even
      the name. We already have IDENT_NO_DATE to handle the date
      part, but there's not a good option for getting just the
      email. Callers have to done one of:
      
        1. Call ident_default_email; this does not respect
           environment variables, nor does it promise to trim
           whitespace or other crud from the result.
      
        2. Call git_{committer,author}_info; this returns the name
           and email, leaving the caller to parse out the wanted
           bits.
      
      This patch adds IDENT_NO_NAME; it stops short of adding
      IDENT_NO_EMAIL, as no callers want it (nor are likely to),
      and it complicates the error handling of the function.
      
      When no name is requested, the angle brackets (<>) around
      the email address are also omitted.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c15e1987
    • J
      ident: refactor NO_DATE flag in fmt_ident · 359b27ad
      Jeff King 提交于
      As a short-hand, we extract this flag into the local
      variable "name_addr_only". It's more accurate to simply
      negate this and refer to it as "want_date", which will be
      less confusing when we add more NO_* flags.
      
      While we're touching this part of the code, let's move the
      call to ident_default_date() only when we are actually going
      to use it, not when we have NO_DATE set, or when we get a
      date from the environment.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      359b27ad
    • J
      ident: reword empty ident error message · b00f6cfc
      Jeff King 提交于
      There's on point in printing the name, since it is by
      definition the empty string if we have reached this code
      path. Instead, let's be more clear that we are complaining
      about the empty name, but still show the email address that
      it is attached to (since that may provide some context to
      the user).
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b00f6cfc
    • M
      Avoid sorting if references are added to ref_cache in order · 654ad400
      Michael Haggerty 提交于
      The old code allowed many references to be efficiently added to a
      single directory, because it just appended the references to the
      containing directory unsorted without doing any searching (and
      therefore without requiring any intermediate sorting).  But the old
      code was inefficient when a large number of subdirectories were added
      to a directory, because the directory always had to be searched to see
      if the new subdirectory already existed, and this search required the
      directory to be sorted first.  The same was repeated for every new
      subdirectory, so the time scaled like O(N^2), where N is the number of
      subdirectories within a single directory.
      
      In practice, references are often added to the ref_cache in
      lexicographic order, for example when reading the packed-refs file.
      So build some intelligence into add_entry_to_dir() to optimize for the
      case of references and/or subdirectories being added in lexicographic
      order: if the existing entries were already sorted, and the new entry
      comes after the last existing entry, then adjust ref_dir::sorted to
      reflect the fact that the ref_dir is still sorted.
      
      Thanks to Peff for pointing out the performance regression that
      inspired this change.
      Signed-off-by: NMichael Haggerty <mhagger@alum.mit.edu>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      654ad400
    • A
      checkout: no progress messages if !isatty(2). · e9fc64c6
      Avery Pennarun 提交于
      If stderr isn't a tty, we shouldn't be printing incremental progress
      messages.  In particular, this affects 'git checkout -f . >&logfile'
      unless you provided -q.  And git-new-workdir has no way to provide -q.
      
      It would probably be better to have progress.c check isatty(2) all the time,
      but that wouldn't allow things like 'git push --progress' to force progress
      reporting to on, so I won't try to solve the general case right now.
      
      Actual fix suggested by Jeff King.
      Signed-off-by: NAvery Pennarun <apenwarr@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      e9fc64c6
    • J
      osxkeychain: pull make config from top-level directory · 17a9ac7d
      Jeff King 提交于
      The default compiler and cflags were mostly "works for me"
      when I built the original version. We need to be much less
      careful here than usual, because we know we are building
      only on OS X.  But it's only polite to at least respect the
      CFLAGS and CC definitions that the user may have provided
      earlier.
      
      While we're at it, let's update our definitions and rules to
      be more like the top-level Makefile; default our CFLAGS to
      include -O2, and make sure we use CFLAGS and LDFLAGS when
      linking.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      17a9ac7d
    • J
      fetch-pack: sort incoming heads list earlier · 3d2a33e5
      Jeff King 提交于
      Commit 44359685 started sorting heads fed to fetch-pack so
      that later commits could use more optimized algorithms;
      commit 7db8d537 switched the remove_duplicates function to
      such an algorithm.
      
      Of course, the sorting is more effective if you do it
      _before_ the algorithm in question.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      3d2a33e5
  4. 24 5月, 2012 2 次提交