1. 23 6月, 2011 4 次提交
  2. 25 5月, 2011 3 次提交
  3. 06 4月, 2011 1 次提交
  4. 21 3月, 2011 1 次提交
  5. 17 3月, 2011 1 次提交
    • J
      standardize brace placement in struct definitions · 9cba13ca
      Jonathan Nieder 提交于
      In a struct definitions, unlike functions, the prevailing style is for
      the opening brace to go on the same line as the struct name, like so:
      
       struct foo {
      	int bar;
      	char *baz;
       };
      
      Indeed, grepping for 'struct [a-z_]* {$' yields about 5 times as many
      matches as 'struct [a-z_]*$'.
      
      Linus sayeth:
      
       Heretic people all over the world have claimed that this inconsistency
       is ...  well ...  inconsistent, but all right-thinking people know that
       (a) K&R are _right_ and (b) K&R are right.
      Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9cba13ca
  6. 16 3月, 2011 1 次提交
  7. 12 3月, 2011 1 次提交
    • L
      Make the default abbrev length configurable · dce96489
      Linus Torvalds 提交于
      The default of 7 comes from fairly early in git development, when
      seven hex digits was a lot (it covers about 250+ million hash
      values). Back then I thought that 65k revisions was a lot (it was what
      we were about to hit in BK), and each revision tends to be about 5-10
      new objects or so, so a million objects was a big number.
      
      These days, the kernel isn't even the largest git project, and even
      the kernel has about 220k revisions (_much_ bigger than the BK tree
      ever was) and we are approaching two million objects. At that point,
      seven hex digits is still unique for a lot of them, but when we're
      talking about just two orders of magnitude difference between number
      of objects and the hash size, there _will_ be collisions in truncated
      hash values. It's no longer even close to unrealistic - it happens all
      the time.
      
      We should both increase the default abbrev that was unrealistically
      small, _and_ add a way for people to set their own default per-project
      in the git config file.
      
      This is the first step to first make it configurable; the default of 7
      is not raised yet.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      dce96489
  8. 11 3月, 2011 1 次提交
  9. 23 2月, 2011 2 次提交
    • L
      Disallow empty section and variable names · 2169ddc0
      Libor Pechacek 提交于
      It is possible to break your repository config by creating an invalid key.  The
      config parser in turn chokes on it:
      
        $ git init
        Initialized empty Git repository in /tmp/gittest/.git/
        $ git config .foo false
        $ git config core.bare
        fatal: bad config file line 6 in .git/config
      
      This patch makes git-config reject keys which start or end with a dot and adds
      tests for these cases.
      Signed-off-by: NLibor Pechacek <lpechacek@suse.cz>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2169ddc0
    • L
      Sanity-check config variable names · b09c53a3
      Libor Pechacek 提交于
      Sanity-check config variable names when adding and retrieving them.  As a side
      effect code duplication between git_config_set_multivar and get_value (in
      builtin/config.c) was removed and the common functionality was placed in
      git_config_parse_key.
      
      This breaks a test in t1300 which used invalid section-less keys in the tests
      for "git -c". However, allowing such names there was useless, since there was
      no way to set them via config file, and no part of git actually tried to use
      section-less keys. This patch updates the test to use more realistic examples
      as well as adding its own test.
      Signed-off-by: NLibor Pechacek <lpechacek@suse.cz>
      Acked-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b09c53a3
  10. 17 2月, 2011 1 次提交
    • J
      push.default: Rename 'tracking' to 'upstream' · 53c40311
      Johan Herland 提交于
      Users are sometimes confused with two different types of "tracking" behavior
      in Git: "remote-tracking" branches (e.g. refs/remotes/*/*) versus the
      merge/rebase relationship between a local branch and its @{upstream}
      (controlled by branch.foo.remote and branch.foo.merge config settings).
      
      When the push.default is set to 'tracking', it specifies that a branch should
      be pushed to its @{upstream} branch. In other words, setting push.default to
      'tracking' applies only to the latter of the above two types of "tracking"
      behavior.
      
      In order to make this more understandable to the user, we rename the
      push.default == 'tracking' option to push.default == 'upstream'.
      
      push.default == 'tracking' is left as a deprecated synonym for 'upstream'.
      Signed-off-by: NJohan Herland <johan@herland.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      53c40311
  11. 23 12月, 2010 1 次提交
  12. 20 12月, 2010 1 次提交
    • J
      handle arbitrary ints in git_config_maybe_bool · db6195ef
      Jeff King 提交于
      This function recently gained the ability to recognize the documented "0"
      and "1" values as false/true. However, unlike regular git_config_bool, it
      did not treat arbitrary non-zero numbers as true.
      
      While this is undocumented and probably ridiculous for somebody to rely
      on, it is safer to behave exactly as git_config_bool would. Because
      git_config_maybe_bool can be used to retrofit new non-bool values onto
      existing bool options, not behaving in exactly the same way is technically
      a regression.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      db6195ef
  13. 18 11月, 2010 1 次提交
    • J
      log.decorate: accept 0/1 bool values · b2be2f6a
      Jeff King 提交于
      We explicitly document "0" and "1" as synonyms for "false"
      and "true" in boolean config options. However, we don't
      actually handle those values in git_config_maybe_bool.
      
      In most cases this works fine, as we call git_config_bool,
      which in turn calls git_config_bool_or_int, which in turn
      calls git_config_maybe_bool. Values of 0/1 are considered
      "not bool", but their integer values end up being converted
      to the corresponding boolean values.
      
      However, the log.decorate code looks for maybe_bool
      explicitly, so that it can fall back to the "short" and
      "full" strings. It does not handle 0/1 at all, and considers
      them invalid values.
      
      We cannot simply add 0/1 support to git_config_maybe_bool.
      That would confuse git_config_bool_or_int, which may want to
      distinguish the integer values "0" and "1" from bools.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b2be2f6a
  14. 29 10月, 2010 1 次提交
    • J
      core.abbrevguard: Ensure short object names stay unique a bit longer · 72a5b561
      Junio C Hamano 提交于
      Even though git makes sure that it uses enough hexdigits to show an
      abbreviated object name unambiguously, as more objects are added to the
      repository over time, a short name that used to be unique will stop being
      unique.  Git uses this many extra hexdigits that are more than necessary
      to make the object name currently unique, in the hope that its output will
      stay unique a bit longer.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      72a5b561
  15. 22 10月, 2010 1 次提交
    • J
      config: treat non-existent config files as empty · 1f2baa78
      Jeff King 提交于
      The git_config() function signals error by returning -1 in
      two instances:
      
        1. An actual error occurs in opening a config file (parse
           errors cause an immediate die).
      
        2. Of the three possible config files, none was found.
      
      However, this second case is often not an error at all; it
      simply means that the user has no configuration (they are
      outside a repo, and they have no ~/.gitconfig file). This
      can lead to confusing errors, such as when the bash
      completion calls "git config --list" outside of a repo. If
      the user has a ~/.gitconfig, the command completes
      succesfully; if they do not, it complains to stderr.
      
      This patch allows callers of git_config to distinguish
      between the two cases. Error is signaled by -1, and
      otherwise the return value is the number of files parsed.
      This means that the traditional "git_config(...) < 0" check
      for error should work, but callers who want to know whether
      we parsed any files or not can still do so.
      
      [jc: with tests from Jonathan]
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      1f2baa78
  16. 01 9月, 2010 1 次提交
  17. 25 8月, 2010 1 次提交
    • J
      pass "git -c foo=bar" params through environment · 2b64fc89
      Jeff King 提交于
      Git uses the "-c foo=bar" parameters to set a config
      variable for a single git invocation. We currently do this
      by making a list in the current process and consulting that
      list in git_config.
      
      This works fine for built-ins, but the config changes are
      silently ignored by subprocesses, including dashed externals
      and invocations to "git config" from shell scripts.
      
      This patch instead puts them in an environment variable
      which we consult when looking at config (both internally and
      via calls "git config").
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2b64fc89
  18. 07 6月, 2010 1 次提交
  19. 20 5月, 2010 1 次提交
    • E
      Add per-repository eol normalization · fd6cce9e
      Eyvind Bernhardsen 提交于
      Change the semantics of the "crlf" attribute so that it enables
      end-of-line normalization when it is set, regardless of "core.autocrlf".
      
      Add a new setting for "crlf": "auto", which enables end-of-line
      conversion but does not override the automatic text file detection.
      
      Add a new attribute "eol" with possible values "crlf" and "lf".  When
      set, this attribute enables normalization and forces git to use CRLF or
      LF line endings in the working directory, respectively.
      
      The line ending style to be used for normalized text files in the
      working directory is set using "core.autocrlf".  When it is set to
      "true", CRLFs are used in the working directory; when set to "input" or
      "false", LFs are used.
      Signed-off-by: NEyvind Bernhardsen <eyvind.bernhardsen@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fd6cce9e
  20. 29 3月, 2010 3 次提交
  21. 18 2月, 2010 1 次提交
    • J
      git_config_maybe_bool() · 8420ccd8
      Junio C Hamano 提交于
      Some configuration variables can take boolean values in addition to
      enumeration specific to them.  Introduce git_config_maybe_bool() that
      returns 0 or 1 if the given value is boolean, or -1 if not, so that
      a parser for such a variable can check for boolean first and then
      parse other kinds of values as a fallback.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8420ccd8
  22. 11 1月, 2010 1 次提交
    • J
      ident.c: check explicit identity for name and email separately · 91c38a21
      Junio C Hamano 提交于
      bb1ae3f6 (commit: Show committer if automatic, 2008-05-04) added a logic to
      check both name and email were given explicitly by the end user, but it
      assumed that fmt_ident() is never called before git_default_user_config()
      is called, which was fragile.  The former calls setup_ident() and fills
      the "default" name and email, so the check in the config parser would have
      mistakenly said both are given even if only user.name was provided.
      
      Make the logic more robust by keeping track of name and email separately.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      Acked-by: NSanti Béjar <santi@agolina.net>
      91c38a21
  23. 18 11月, 2009 1 次提交
  24. 20 10月, 2009 1 次提交
    • J
      Introduce commit notes · a97a7468
      Johannes Schindelin 提交于
      Commit notes are blobs which are shown together with the commit
      message.  These blobs are taken from the notes ref, which you can
      configure by the config variable core.notesRef, which in turn can
      be overridden by the environment variable GIT_NOTES_REF.
      
      The notes ref is a branch which contains "files" whose names are
      the names of the corresponding commits (i.e. the SHA-1).
      
      The rationale for putting this information into a ref is this: we
      want to be able to fetch and possibly union-merge the notes,
      maybe even look at the date when a note was introduced, and we
      want to store them efficiently together with the other objects.
      
      This patch has been improved by the following contributions:
      - Thomas Rast: fix core.notesRef documentation
      - Tor Arne Vestbø: fix printing of multi-line notes
      - Alex Riesen: Using char array instead of char pointer costs less BSS
      - Johan Herland: Plug leak when msg is good, but msglen or type causes return
      Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
      Signed-off-by: NThomas Rast <trast@student.ethz.ch>
      Signed-off-by: NTor Arne Vestbø <tavestbo@trolltech.com>
      Signed-off-by: NJohan Herland <johan@herland.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      
      get_commit_notes(): Plug memory leak when 'if' triggers, but not because of read_sha1_file() failure
      a97a7468
  25. 13 9月, 2009 1 次提交
    • J
      use write_str_in_full helper to avoid literal string lengths · 2b7ca830
      Jim Meyering 提交于
      In 2d14d65c (Use a clearer style to issue commands to remote helpers,
      2009-09-03) I happened to notice two changes like this:
      
      -	write_in_full(helper->in, "list\n", 5);
      +
      +	strbuf_addstr(&buf, "list\n");
      +	write_in_full(helper->in, buf.buf, buf.len);
      +	strbuf_reset(&buf);
      
      IMHO, it would be better to define a new function,
      
          static inline ssize_t write_str_in_full(int fd, const char *str)
          {
                 return write_in_full(fd, str, strlen(str));
          }
      
      and then use it like this:
      
      -       strbuf_addstr(&buf, "list\n");
      -       write_in_full(helper->in, buf.buf, buf.len);
      -       strbuf_reset(&buf);
      +       write_str_in_full(helper->in, "list\n");
      
      Thus not requiring the added allocation, and still avoiding
      the maintenance risk of literal string lengths.
      These days, compilers are good enough that strlen("literal")
      imposes no run-time cost.
      
      Transformed via this:
      
          perl -pi -e \
              's/write_in_full\((.*?), (".*?"), \d+\)/write_str_in_full($1, $2)/'\
            $(git grep -l 'write_in_full.*"')
      Signed-off-by: NJim Meyering <meyering@redhat.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2b7ca830
  26. 12 9月, 2009 1 次提交
    • J
      push: make non-fast-forward help message configurable · 75194438
      Jeff King 提交于
      This message is designed to help new users understand what
      has happened when refs fail to push. However, it does not
      help experienced users at all, and significantly clutters
      the output, frequently dwarfing the regular status table and
      making it harder to see.
      
      This patch introduces a general configuration mechanism for
      optional messages, with this push message as the first
      example.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      75194438
  27. 24 8月, 2009 1 次提交
  28. 31 7月, 2009 1 次提交
  29. 25 7月, 2009 2 次提交
  30. 06 5月, 2009 1 次提交
  31. 02 5月, 2009 1 次提交