Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Aug 22, 2011
  1. @gitster

    read_gitfile_gently(): rename misnamed function to read_gitfile()

    gitster authored
    The function was not gentle at all to the callers and died without giving
    them a chance to deal with possible errors. Rename it to read_gitfile(),
    and update all the callers.
    
    As no existing caller needs a true "gently" variant, we do not bother
    adding one at this point.
    
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on May 30, 2011
  1. @gitster

    Merge branch 'maint'

    gitster authored
    * maint:
      git-submodule.sh: separate parens by a space to avoid confusing some shells
      Documentation/technical/api-diff.txt: correct name of diff_unmerge()
      read_gitfile_gently: use ssize_t to hold read result
      remove tests of always-false condition
      rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'
  2. @gitster

    Merge branch 'jm/maint-misc-fix' into maint

    gitster authored
    * jm/maint-misc-fix:
      read_gitfile_gently: use ssize_t to hold read result
      remove tests of always-false condition
      rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'
Commits on May 26, 2011
  1. @peff @gitster

    read_gitfile_gently: use ssize_t to hold read result

    peff authored gitster committed
    Otherwise, a negative error return becomes a very large read
    value. We catch this in practice because we compare the
    expected and actual numbers of bytes (and you are not likely
    to be reading (size_t)-1 bytes), but this makes the
    correctness a little more obvious.
    
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on May 23, 2011
  1. @gitster

    Merge branch 'jc/magic-pathspec'

    gitster authored
    * jc/magic-pathspec:
      setup.c: Fix some "symbol not declared" sparse warnings
      t3703: Skip tests using directory name ":" on Windows
      revision.c: leave a note for "a lone :" enhancement
      t3703, t4208: add test cases for magic pathspec
      rev/path disambiguation: further restrict "misspelled index entry" diag
      fix overslow :/no-such-string-ever-existed diagnostics
      fix overstrict :<path> diagnosis
      grep: use get_pathspec() correctly
      pathspec: drop "lone : means no pathspec" from get_pathspec()
      Revert "magic pathspec: add ":(icase)path" to match case insensitively"
      magic pathspec: add ":(icase)path" to match case insensitively
      magic pathspec: futureproof shorthand form
      magic pathspec: add tentative ":/path/from/top/level" pathspec support
Commits on May 18, 2011
  1. @gitster

    setup.c: Fix some "symbol not declared" sparse warnings

    Ramsay Jones authored gitster committed
    In particular, sparse issues the "symbol 'a_symbol' was not declared.
    Should it be static?" warnings for the following symbols:
    
        setup.c:159:3: 'pathspec_magic'
        setup.c:176:12: 'prefix_pathspec'
    
    These symbols only require file scope, so we add the static modifier
    to their declarations.
    
    Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on May 10, 2011
  1. @gitster

    rev/path disambiguation: further restrict "misspelled index entry" diag

    gitster authored
    A colon followed by anything !isalnum() (e.g. ":/heh") at this point is
    known not to be an existing rev.  Just give a generic "neither a rev nor
    a path" error message.
    
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @gitster

    fix overslow :/no-such-string-ever-existed diagnostics

    gitster authored
    "git cmd :/no-such-string-ever-existed" runs an extra round of get_sha1()
    since 009fee4 (Detailed diagnosis when parsing an object name fails.,
    2009-12-07).  Once without error diagnosis to see there is no commit with
    such a string in the log message (hence "it cannot be a ref"), and after
    seeing that :/no-such-string-ever-existed is not a filename (hence "it
    cannot be a path, either"), another time to give "better diagnosis".
    
    The thing is, the second time it runs, we already know that traversing the
    history all the way down to the root will _not_ find any matching commit.
    
    Rename misguided "gently" parameter, which is turned off _only_ when the
    "detailed diagnosis" codepath knows that it cannot be a ref and making the
    call only for the caller to die with a message.  Flip its meaning (and
    adjust the callers) and call it "only_to_die", which is not a great name,
    but it describes far more clearly what the codepaths that switches their
    behaviour based on this variable do.
    
    On my box, the command spends ~1.8 seconds without the patch to make the
    report; with the patch it spends ~1.12 seconds.
    
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  3. @gitster

    pathspec: drop "lone : means no pathspec" from get_pathspec()

    gitster authored
    We may want to give the pathspec subsystem such a feature, but not while
    we are still using get_pathspec() that returns a stupid "char **" that
    loses subtle nuances that existed in the input string.
    
    In the meantime, the callers of get_pathspec() that want to support it
    could do an equivalent before feeding their argv[] to the function
    themselves quite easily.
    
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  4. @gitster

    Revert "magic pathspec: add ":(icase)path" to match case insensitively"

    gitster authored
    This reverts commit d0546e2, which
    was only meant to be a Proof-of-concept used during the discussion.
    
    The real implementation of the feature needs to wait until we migrate
    all the code to use "struct pathspec", not "char **", to represent
    richer semantics given to pathspec.
Commits on May 2, 2011
  1. @gitster

    Merge branch 'nd/maint-setup'

    gitster authored
    * nd/maint-setup:
      Kill off get_relative_cwd()
      setup: return correct prefix if worktree is '/'
    
    Conflicts:
    	dir.c
    	setup.c
Commits on Apr 8, 2011
  1. @gitster

    magic pathspec: add ":(icase)path" to match case insensitively

    gitster authored
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @gitster

    magic pathspec: futureproof shorthand form

    gitster authored
    The earlier design was to take whatever non-alnum that the short format
    parser happens to support, leaving the rest as part of the pattern, so a
    version of git that knows '*' magic and a version that does not would have
    behaved differently when given ":*Makefile".  The former would have
    applied the '*' magic to the pattern "Makefile", while the latter would
    used no magic to the pattern "*Makefile".
    
    Instead, just reserve all non-alnum ASCII letters that are neither glob
    nor regexp special as potential magic signature, and when we see a magic
    that is not supported, die with an error message, just like the longhand
    codepath does.
    
    With this, ":%#!*Makefile" will always mean "%#!" magic applied to the
    pattern "*Makefile", no matter what version of git is used (it is a
    different matter if the version of git supports all of these three magic
    matching rules).
    
    Also make ':' without anything else to mean "there is no pathspec".  This
    would allow differences between "git log" and "git log ." run from the top
    level of the working tree (the latter simplifies no-op commits away from
    the history) to be expressed from a subdirectory by saying "git log :".
    
    Helped-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Apr 7, 2011
  1. @gitster

    magic pathspec: add tentative ":/path/from/top/level" pathspec support

    gitster authored
    Support ":/" magic string that can be prefixed to a pathspec element to
    say "this names the path from the top-level of the working tree", when
    you are in the subdirectory.
    
    For example, you should be able to say:
    
        $ edit Makefile ;# top-level
        $ cd Documentation
        $ edit git.txt ;# in the subdirectory
    
    and then do one of three things, still inside the subdirectory:
    
        $ git add -u .  ;# add only Documentation/git.txt
        $ git add -u :/ ;# add everything, including paths outside Documentation
        $ git add -u    ;# whatever the default setting is.
    
    To truly support magic pathspec, the API needs to be restructured so that
    get_pathspec() and init_pathspec() are unified into one call.  Currently,
    the former just prefixes the user supplied pathspec with the current
    subdirectory path, and the latter takes the output from the former and
    pre-parses them into a bit richer structure for easier handling.  They
    should become a single API function that takes the current subdirectory
    path and the remainder of argv[] (after parsing --options and revision
    arguments from the command line) and returns an array of parsed pathspec
    elements, and "magic" should become attributes of struct pathspec_item.
    
    This patch implements only "top" magic because it can be hacked into the
    system without such a refactoring.
    
    The syntax for magic pathspec prefix is designed to be extensible yet
    simple to type to invoke a simple magic like "from the top".  The parser
    for the magic prefix is hooked into get_pathspec() function in this patch,
    and it needs to be moved when we refactor the API.
    
    But we have to start from somewhere.
    
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Mar 29, 2011
  1. @pclouds @gitster

    setup: return correct prefix if worktree is '/'

    pclouds authored gitster committed
    The same old problem reappears after setup code is reworked.  We tend
    to assume there is at least one path component in a path and forget
    that path can be simply '/'.
    
    Reported-by: Matthijs Kooijman <matthijs@stdin.nl>
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Mar 17, 2011
  1. @carlosmn @gitster

    Name make_*_path functions more accurately

    carlosmn authored gitster committed
    Rename the make_*_path functions so it's clearer what they do, in
    particlar make clear what the differnce between make_absolute_path and
    make_nonrelative_path is by renaming them real_path and absolute_path
    respectively. make_relative_path has an understandable name and is
    renamed to relative_path to maintain the name convention.
    
    The function calls have been replaced 1-to-1 in their usage.
    
    Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Feb 10, 2011
  1. @gitster

    Merge branch 'cb/setup'

    gitster authored
    * cb/setup:
      setup: translate symlinks in filename when using absolute paths
Commits on Jan 21, 2011
  1. @jrn @gitster

    Subject: setup: officially support --work-tree without --git-dir

    jrn authored gitster committed
    The original intention of --work-tree was to allow people to work in a
    subdirectory of their working tree that does not have an embedded .git
    directory.  Because their working tree, which their $cwd was in, did not
    have an embedded .git, they needed to use $GIT_DIR to specify where it is,
    and because this meant there was no way to discover where the root level
    of the working tree was, so we needed to add $GIT_WORK_TREE to tell git
    where it was.
    
    However, this facility has long been (mis)used by people's scripts to
    start git from a working tree _with_ an embedded .git directory, let git
    find .git directory, and then pretend as if an unrelated directory were
    the associated working tree of the .git directory found by the discovery
    process.  It happens to work in simple cases, and is not worth causing
    "regression" to these scripts.
    
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 4, 2011
  1. @carenas @gitster

    setup: translate symlinks in filename when using absolute paths

    carenas authored gitster committed
    otherwise, comparison to validate against work tree will fail when
    the path includes a symlink and the name passed is not canonical.
    
    Signed-off-by: Carlo Marcelo Arenas Belon <carenas@sajinet.com.pe>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Dec 28, 2010
  1. @gitster

    Merge branch 'nd/setup'

    gitster authored
    * nd/setup: (47 commits)
      setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd
      git.txt: correct where --work-tree path is relative to
      Revert "Documentation: always respect core.worktree if set"
      t0001: test git init when run via an alias
      Remove all logic from get_git_work_tree()
      setup: rework setup_explicit_git_dir()
      setup: clean up setup_discovered_git_dir()
      t1020-subdirectory: test alias expansion in a subdirectory
      setup: clean up setup_bare_git_dir()
      setup: limit get_git_work_tree()'s to explicit setup case only
      Use git_config_early() instead of git_config() during repo setup
      Add git_config_early()
      git-rev-parse.txt: clarify --git-dir
      t1510: setup case #31
      t1510: setup case #30
      t1510: setup case #29
      t1510: setup case #28
      t1510: setup case #27
      t1510: setup case #26
      t1510: setup case #25
      ...
Commits on Dec 27, 2010
  1. @pclouds @gitster

    setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd

    pclouds authored gitster committed
    When setup_work_tree() is called, it moves cwd to $GIT_WORK_TREE and
    makes internal copy of $GIT_WORK_TREE absolute. The environt variable,
    if set by user, remains unchanged. If the variable is relative, it is
    no longer correct because its base dir has changed.
    
    Instead of making $GIT_WORK_TREE absolute too, we just say "." and let
    subsequent git processes handle it.
    
    Reported-by: Michel Briand <michelbriand@free.fr>
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Dec 22, 2010
  1. @pclouds @gitster

    setup: rework setup_explicit_git_dir()

    pclouds authored gitster committed
    This function is the most complex one among the three setup_*
    functions because all GIT_DIR, GIT_WORK_TREE, core.worktree and
    core.bare are involved.
    
    Because core.worktree is only effective inside
    setup_explicit_git_dir() and the extra code in setup_git_directory()
    is to handle that. The extra code can now be retired.
    
    Also note that setup_explicit assignment is removed, worktree setting
    is no longer decided by get_git_work_tree(). get_git_work_tree() will
    be simplified in the next commit.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @pclouds @gitster

    setup: clean up setup_discovered_git_dir()

    pclouds authored gitster committed
    If core.bare is true, discard the discovered worktree, move back to
    original cwd.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  3. @pclouds @gitster

    setup: clean up setup_bare_git_dir()

    pclouds authored gitster committed
    work_tree_env argument is removed because this function does not need
    it. GIT_WORK_TREE is only effective inside setup_explicit_git_dir.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  4. @pclouds @gitster

    setup: limit get_git_work_tree()'s to explicit setup case only

    pclouds authored gitster committed
    get_git_work_tree() takes input as core.worktree, core.bare,
    GIT_WORK_TREE and decides correct worktree setting.
    
    Unfortunately it does not do its job well. core.worktree and
    GIT_WORK_TREE should only be taken into account, if GIT_DIR is set
    (which is handled by setup_explicit_git_dir). For other setup cases,
    only core.bare matters.
    
    Add a temporary variable setup_explicit to adjust get_git_work_tree()
    behavior as such. This variable will be gone once setup_* rework is
    done.
    
    Also remove is_bare_repository_cfg check in set_git_work_tree() to
    ease the rework. We are going to check for core.bare and core.worktree
    early before setting worktree. For example, if core.bare is true, no
    need to set worktree.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  5. @pclouds @gitster

    Use git_config_early() instead of git_config() during repo setup

    pclouds authored gitster committed
    When git_config() is called, either git_dir has already been set (by
    $GIT_DIR env or set_git_dir()), or it will default git_dir to ".git".
    
    git_config_early() gives setup functions more freedom because it does
    not require git_dir. Give it a config path, it will happily examine
    it.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Dec 16, 2010
  1. @gitster

    Merge branch 'nd/extended-sha1-relpath'

    gitster authored
    * nd/extended-sha1-relpath:
      get_sha1: teach ":$n:<path>" the same relative path logic
      get_sha1: support relative path ":path" syntax
      Make prefix_path() return char* without const
    
    Conflicts:
    	sha1_name.c
Commits on Dec 13, 2010
  1. @gitster

    Merge branch 'jn/parse-options-extra'

    gitster authored
    * jn/parse-options-extra:
      update-index: migrate to parse-options API
      setup: save prefix (original cwd relative to toplevel) in startup_info
      parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION
      parse-options: allow git commands to invent new option types
      parse-options: never suppress arghelp if LITERAL_ARGHELP is set
      parse-options: do not infer PARSE_OPT_NOARG from option type
      parse-options: sanity check PARSE_OPT_NOARG flag
      parse-options: move NODASH sanity checks to parse_options_check
      parse-options: clearer reporting of API misuse
      parse-options: Don't call parse_options_check() so much
Commits on Dec 7, 2010
  1. @pclouds @gitster

    Make prefix_path() return char* without const

    pclouds authored gitster committed
    prefix_path() allocates new buffer. There's no reason for it to keep
    the buffer for itself and waste memory.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @pclouds @gitster

    setup: save prefix (original cwd relative to toplevel) in startup_info

    pclouds authored gitster committed
    Save the path from the original cwd to the cwd at the end of the
    setup procedure in the startup_info struct introduced in e37c132
    (2010-08-05).  The value cannot vary from thread to thread anyway,
    since the cwd is global.
    
    So now in your builtin command, instead of passing prefix around,
    when you want to convert a user-supplied path to a cwd-relative
    path, you can use startup_info->prefix directly.
    
    Caveat: As with the return value from setup_git_directory_gently(),
    startup_info->prefix would be NULL when the original cwd is not a
    subdir of the toplevel.
    
    Longer term, this would allow the prefix to be reused when several
    noncooperating functions require access to the same repository (for
    example, when accessing configuration before running a builtin).
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Oct 18, 2010
  1. @trast @gitster

    prefix_filename(): safely handle the case where pfx_len=0

    trast authored gitster committed
    Current prefix_filename() is proofed against the case where the prefix
    'pfx' is NULL or a 0-length string, _except on Windows_.
    
    Change the behaviour to work the same on both platforms, and only
    check pfx_len so that callers passing a NULL prefix with a nonzero
    pfx_len segfault early on both.
    
    Signed-off-by: Thomas Rast <trast@student.ethz.ch>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Aug 31, 2010
  1. @gitster

    Merge branch 'jn/paginate-fix'

    gitster authored
    * jn/paginate-fix:
      t7006 (pager): add missing TTY prerequisites
      merge-file: run setup_git_directory_gently() sooner
      var: run setup_git_directory_gently() sooner
      ls-remote: run setup_git_directory_gently() sooner
      index-pack: run setup_git_directory_gently() sooner
      config: run setup_git_directory_gently() sooner
      bundle: run setup_git_directory_gently() sooner
      apply: run setup_git_directory_gently() sooner
      grep: run setup_git_directory_gently() sooner
      shortlog: run setup_git_directory_gently() sooner
      git wrapper: allow setup_git_directory_gently() be called earlier
      setup: remember whether repository was found
      git wrapper: introduce startup_info struct
    
    Conflicts:
    	builtin/index-pack.c
Commits on Aug 16, 2010
  1. @gitster

    Merge branch 'jn/maint-setup-fix' (early part) into jn/paginate-fix

    gitster authored
    * 'jn/maint-setup-fix' (early part):
      Revert "rehabilitate 'git index-pack' inside the object store"
      setup: do not forget working dir from subdir of gitdir
      t4111 (apply): refresh index before applying patches to it
      setup: split off get_device_or_die helper
      setup: split off a function to handle hitting ceiling in repo search
      setup: split off code to handle stumbling upon a repository
      setup: split off a function to checks working dir for .git file
      setup: split off $GIT_DIR-set case from setup_git_directory_gently
      tests: try git apply from subdir of toplevel
      t1501 (rev-parse): clarify
Commits on Aug 11, 2010
  1. @pclouds @gitster

    setup: remember whether repository was found

    pclouds authored gitster committed
    As v1.7.2~16^2 (git --paginate: paginate external commands
    again, 2010-07-14) explains, builtins (like git config) that
    do not use RUN_SETUP are not finding GIT_DIR set correctly when
    it is time to launch the pager from run_builtin().  If they
    were to search for a repository sooner, then the outcome of such
    early repository accesses would be more predictable and reliable.
    
    The cmd_*() functions learn whether a repository was found through the
    *nongit_ok return value from setup_git_directory_gently().  If
    run_builtin() is to take care of the repository search itself, that
    datum needs to be retrievable from somewhere else.  Use the
    startup_info struct for this.
    
    As a bonus, this information becomes available to functions such as
    git_config() which might want to avoid trying to access a repository
    when none is present.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Aug 4, 2010
  1. @pclouds @gitster

    setup: split off a function to handle ordinary .git directories

    pclouds authored gitster committed
    Finish the clean-up of setup_git_directory_gently() by splitting the
    last case of validation+setup (global variables, prefix, check_format,
    set_git_dir) into its own function.  Now setup_git_git_directory_gently
    itself takes care of discovery only and the functions that pick up
    from there are nearby in the source file so they can be easily
    compared.
    
    Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Something went wrong with that request. Please try again.