Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Aug 6, 2013
  1. @jlehmann @gitster

    rm: delete .gitmodules entry of submodules removed from the work tree

    jlehmann authored gitster committed
    Currently using "git rm" on a submodule removes the submodule's work tree
    from that of the superproject and the gitlink from the index. But the
    submodule's section in .gitmodules is left untouched, which is a leftover
    of the now removed submodule and might irritate users (as opposed to the
    setting in .git/config, this must stay as a reminder that the user showed
    interest in this submodule so it will be repopulated later when an older
    commit is checked out).
    
    Let "git rm" help the user by not only removing the submodule from the
    work tree but by also removing the "submodule.<submodule name>" section
    from the .gitmodules file and stage both. This doesn't happen when the
    "--cached" option is used, as it would modify the work tree. This also
    silently does nothing when no .gitmodules file is found and only issues a
    warning when it doesn't have a section for this submodule. This is because
    the user might just use plain gitlinks without the .gitmodules file or has
    already removed the section by hand before issuing the "git rm" command
    (in which case the warning reminds him that rm would have done that for
    him). Only when .gitmodules is found and contains merge conflicts the rm
    command will fail and tell the user to resolve the conflict before trying
    again.
    
    Also extend the man page to inform the user about this new feature. While
    at it promote the submodule sub-section to a chapter as it made not much
    sense under "REMOVING FILES THAT HAVE DISAPPEARED FROM THE FILESYSTEM".
    
    In t7610 three uses of "git rm submod" had to be replaced with "git rm
    --cached submod" because that test expects .gitmodules and the work tree
    to stay untouched. Also in t7400 the tests for the remaining settings in
    the .gitmodules file had to be changed to assert that these settings are
    missing.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @jlehmann @gitster

    mv: update the path entry in .gitmodules for moved submodules

    jlehmann authored gitster committed
    Currently using "git mv" on a submodule moves the submodule's work tree in
    that of the superproject. But the submodule's path setting in .gitmodules
    is left untouched, which is now inconsistent with the work tree and makes
    git commands that rely on the proper path -> name mapping (like status and
    diff) behave strangely.
    
    Let "git mv" help here by not only moving the submodule's work tree but
    also updating the "submodule.<submodule name>.path" setting from the
    .gitmodules file and stage both. This doesn't happen when no .gitmodules
    file is found and only issues a warning when it doesn't have a section for
    this submodule. This is because the user might just use plain gitlinks
    without the .gitmodules file or has already updated the path setting by
    hand before issuing the "git mv" command (in which case the warning
    reminds him that mv would have done that for him). Only when .gitmodules
    is found and contains merge conflicts the mv command will fail and tell
    the user to resolve the conflict before trying again.
    
    Also extend the man page to inform the user about this new feature.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jul 30, 2013
  1. @jlehmann @gitster

    submodule.c: add .gitmodules staging helper functions

    jlehmann authored gitster committed
    Add the new is_staging_gitmodules_ok() and stage_updated_gitmodules()
    functions to submodule.c. The first makes it possible for call sites to
    see if the .gitmodules file did contain any unstaged modifications they
    would accidentally stage in addition to those they intend to stage
    themselves. The second function stages all modifications to the
    .gitmodules file, both will be used by subsequent patches for the mv
    and rm commands.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @jlehmann @gitster

    mv: move submodules using a gitfile

    jlehmann authored gitster committed
    When moving a submodule which uses a gitfile to point to the git directory
    stored in .git/modules/<name> of the superproject two changes must be made
    to make the submodule work: the .git file and the core.worktree setting
    must be adjusted to point from work tree to git directory and back.
    
    Achieve that by remembering which submodule uses a gitfile by storing the
    result of read_gitfile() of each submodule. If that is not NULL the new
    function connect_work_tree_and_git_dir() is called after renaming the
    submodule's work tree which updates the two settings to the new values.
    
    Extend the man page to inform the user about that feature (and while at it
    change the description to not talk about a script anymore, as mv is a
    builtin for quite some time now).
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Apr 5, 2013
  1. @johnkeeping @gitster

    submodule: print graph output next to submodule log

    johnkeeping authored gitster committed
    When running "git log -p --submodule=log", the submodule log is not
    indented by the graph output, although all other lines are.  Fix this by
    prepending the current line prefix to each line of the submodule log.
    
    Signed-off-by: John Keeping <john@keeping.me.uk>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Nov 19, 2012
  1. @artagnon @gitster

    submodule: display summary header in bold

    artagnon authored gitster committed
    Currently, 'git diff --submodule' displays output with a bold diff
    header for non-submodules.  So this part is in bold:
    
        diff --git a/file1 b/file1
        index 30b2f6c..2638038 100644
        --- a/file1
        +++ b/file1
    
    For submodules, the header looks like this:
    
        Submodule submodule1 012b072..248d0fd:
    
    Unfortunately, it's easy to miss in the output because it's not bold.
    Change this.
    
    Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
    Acked-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Oct 29, 2012
  1. @peff

    Merge branch 'jl/submodule-rm'

    peff authored
    "git rm submodule" cannot blindly remove a submodule directory as
    its working tree may have local changes, and worse yet, it may even
    have its repository embedded in it.  Teach it some special cases
    where it is safe to remove a submodule, specifically, when there is
    no local changes in the submodule working tree, and its repository
    is not embedded in its working tree but is elsewhere and uses the
    gitfile mechanism to point at it.
    
    * jl/submodule-rm:
      submodule: teach rm to remove submodules unless they contain a git directory
Commits on Sep 29, 2012
  1. @jlehmann @gitster

    submodule: teach rm to remove submodules unless they contain a git di…

    jlehmann authored gitster committed
    …rectory
    
    Currently using "git rm" on a submodule - populated or not - fails with
    this error:
    
    	fatal: git rm: '<submodule path>': Is a directory
    
    This made sense in the past as there was no way to remove a submodule
    without possibly removing unpushed parts of the submodule's history
    contained in its .git directory too, so erroring out here protected the
    user from possible loss of data.
    
    But submodules cloned with a recent git version do not contain the .git
    directory anymore, they use a gitfile to point to their git directory
    which is safely stored inside the superproject's .git directory. The work
    tree of these submodules can safely be removed without losing history, so
    let's teach git to do so.
    
    Using rm on an unpopulated submodule now removes the empty directory from
    the work tree and the gitlink from the index. If the submodule's directory
    is missing from the work tree, it will still be removed from the index.
    
    Using rm on a populated submodule using a gitfile will apply the usual
    checks for work tree modification adapted to submodules (unless forced).
    For a submodule that means that the HEAD is the same as recorded in the
    index, no tracked files are modified and no untracked files that aren't
    ignored are present in the submodules work tree (ignored files are deemed
    expendable and won't stop a submodule's work tree from being removed).
    That logic has to be applied in all nested submodules too.
    
    Using rm on a submodule which has its .git directory inside the work trees
    top level directory will just error out like it did before to protect the
    repository, even when forced. In the future git could either provide a
    message informing the user to convert the submodule to use a gitfile or
    even attempt to do the conversion itself, but that is not part of this
    change.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Sep 3, 2012
  1. @jlehmann @gitster

    submodule: use argv_array instead of hand-building arrays

    jlehmann authored gitster committed
    fetch_populated_submodules() allocates the full argv array it uses to
    recurse into the submodules from the number of given options plus the six
    argv values it is going to add. It then initializes it with those values
    which won't change during the iteration and copies the given options into
    it. Inside the loop the two argv values different for each submodule get
    replaced with those currently valid.
    
    However, this technique is brittle and error-prone (as the comment to
    explain the magic number 6 indicates), so let's replace it with an
    argv_array. Instead of replacing the argv values, push them to the
    argv_array just before the run_command() call (including the option
    separating them) and pop them from the argv_array right after that.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Apr 24, 2012
  1. @gitster

    Merge branch 'hv/submodule-recurse-push'

    gitster authored
    "git push --recurse-submodules" learns to optionally look into the
    histories of submodules bound to the superproject and push them out.
    
    By Heiko Voigt
    * hv/submodule-recurse-push:
      push: teach --recurse-submodules the on-demand option
      Refactor submodule push check to use string list instead of integer
      Teach revision walking machinery to walk multiple times sequencially
Commits on Apr 10, 2012
  1. @gitster

    submodule: fix prototype of gitmodules_config

    René Scharfe authored gitster committed
    Add void to make it match its definition in submodule.c.
    
    Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Mar 30, 2012
  1. @gitster

    push: teach --recurse-submodules the on-demand option

    Heiko Voigt authored gitster committed
    When using this option git will search for all submodules that
    have changed in the revisions to be send. It will then try to
    push the currently checked out branch of each submodule.
    
    This helps when a user has finished working on a change which
    involves submodules and just wants to push everything in one go.
    
    Signed-off-by: Fredrik Gustafsson <iveqy@iveqy.com>
    Mentored-by: Jens Lehmann <Jens.Lehmann@web.de>
    Mentored-by: Heiko Voigt <hvoigt@hvoigt.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @gitster

    Refactor submodule push check to use string list instead of integer

    Heiko Voigt authored gitster committed
    This allows us to tell the user which submodules have not been pushed.
    Additionally this is helpful when we want to automatically try to push
    submodules that have not been pushed.
    
    Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Oct 13, 2011
  1. @bradking @gitster

    submodule: Search for merges only at end of recursive merge

    bradking authored gitster committed
    The submodule merge search is not useful during virtual merges because
    the results cannot be used automatically.  Furthermore any suggestions
    made by the search may apply to commits different than HEAD:sub and
    MERGE_HEAD:sub, thus confusing the user.  Skip searching for submodule
    merges during a virtual merge such as that between B and C while merging
    the heads of:
    
        B---BC
       / \ /
      A   X
       \ / \
        C---CB
    
    Run the search only when the recursion level is zero (!o->call_depth).
    This fixes known breakage tested in t7405-submodule-merge.
    
    Signed-off-by: Brad King <brad.king@kitware.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Aug 21, 2011
  1. @iveqy @gitster

    push: Don't push a repository with unpushed submodules

    iveqy authored gitster committed
    When working with submodules it is easy to forget to push a
    submodule to the server but pushing a super-project that
    contains a commit for that submodule. The result is that the
    superproject points at a submodule commit that is not available
    on the server.
    
    This adds the option --recurse-submodules=check to push. When
    using this option git will check that all submodule commits that
    are about to be pushed are present on a remote of the submodule.
    
    To be able to use a combined diff, disabling a diff callback has
    been removed from combined-diff.c.
    
    Signed-off-by: Fredrik Gustafsson <iveqy@iveqy.com>
    Mentored-by: Jens Lehmann <Jens.Lehmann@web.de>
    Mentored-by: Heiko Voigt <hvoigt@hvoigt.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Mar 9, 2011
  1. @jlehmann @gitster

    fetch/pull: Add the 'on-demand' value to the --recurse-submodules option

    jlehmann authored gitster committed
    Until now the --recurse-submodules option could only be used to either
    fetch all populated submodules recursively or to disable recursion
    completely. As fetch and pull now by default just fetch those submodules
    for which new commits have been fetched in the superproject, a command
    line option to enforce that behavior is needed to be able to override
    configuration settings.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @jlehmann @gitster

    fetch/pull: recurse into submodules when necessary

    jlehmann authored gitster committed
    To be able to access all commits of populated submodules referenced by the
    superproject it is sufficient to only then let "git fetch" recurse into a
    submodule when the new commits fetched in the superproject record new
    commits for it. Having these commits present is extremely useful when
    using the "--submodule" option to "git diff" (which is what "git gui" and
    "gitk" do since 1.6.6), as all submodule commits needed for creating a
    descriptive output can be accessed. Also merging submodule commits (added
    in 1.7.3) depends on the submodule commits in question being present to
    work. Last but not least this enables disconnected operation when using
    submodules, as all commits necessary for a successful "git submodule
    update -N" will have been fetched automatically. So we choose this mode as
    the default for fetch and pull.
    
    Before a new or changed ref from upstream is updated in update_local_ref()
    "git rev-list <new-sha1> --not --branches --remotes" is used to determine
    all newly fetched commits. These are then walked and diffed against their
    parent(s) to see if a submodule has been changed. If that is the case, its
    path is stored to be fetched after the superproject fetch is completed.
    
    Using the "--recurse-submodules" or the "--no-recurse-submodules" option
    disables the examination of the fetched refs because the result will be
    ignored anyway.
    
    There is currently no infrastructure for storing deleted and new
    submodules in the .git directory of the superproject. That's why fetch and
    pull for now only fetch submodules that are already checked out and are
    not renamed.
    
    In t7403 the "--no-recurse-submodules" argument had to be added to "git
    pull" to avoid failure because of the moved upstream submodule repo.
    
    Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
    Thanks-to: Heiko Voigt <hvoigt@hvoigt.net>
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Nov 12, 2010
  1. @jlehmann @gitster

    Add the 'fetch.recurseSubmodules' config setting

    jlehmann authored gitster committed
    This new boolean option can be used to override the default for "git
    fetch" and "git pull", which is to not recurse into populated submodules
    and fetch all new commits there too.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @jlehmann @gitster

    fetch/pull: Add the --recurse-submodules option

    jlehmann authored gitster committed
    Until now you had to call "git submodule update" (without -N|--no-fetch
    option) or something like "git submodule foreach git fetch" to fetch
    new commits in populated submodules from their remote.
    
    This could lead to "(commits not present)" messages in the output of
    "git diff --submodule" (which is used by "git gui" and "gitk") after
    fetching or pulling new commits in the superproject and is an obstacle for
    implementing recursive checkout of submodules. Also "git submodule
    update" cannot fetch changes when disconnected, so it was very easy to
    forget to fetch the submodule changes before disconnecting only to
    discover later that they are needed.
    
    This patch adds the "--recurse-submodules" option to recursively fetch
    each populated submodule from the url configured in the .git/config of the
    submodule at the end of each "git fetch" or during "git pull" in the
    superproject. The submodule paths are taken from the index.
    
    The hidden option "--submodule-prefix" is added to "git fetch" to be able
    to print out the full paths of nested submodules.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Aug 22, 2010
  1. @gitster

    Merge branch 'hv/submodule-find-ff-merge'

    gitster authored
    * hv/submodule-find-ff-merge:
      Implement automatic fast-forward merge for submodules
      setup_revisions(): Allow walking history in a submodule
      Teach ref iteration module about submodules
    
    Conflicts:
    	submodule.c
Commits on Aug 9, 2010
  1. @jlehmann @gitster

    Submodules: Use "ignore" settings from .gitmodules too for diff and s…

    jlehmann authored gitster committed
    …tatus
    
    The .gitmodules file is parsed for "submodule.<name>.ignore" entries
    before looking for them in .git/config. Thus settings found in .git/config
    will override those from .gitmodules, thereby allowing the local developer
    to ignore settings given by the remote side while also letting upstream
    set defaults for those users who don't have special needs.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. @jlehmann @gitster

    Submodules: Add the new "ignore" config option for diff and status

    jlehmann authored gitster committed
    The new "ignore" config option controls the default behavior for "git
    status" and the diff family. It specifies under what circumstances they
    consider submodules as modified and can be set separately for each
    submodule.
    
    The command line option "--ignore-submodules=" has been extended to accept
    the new parameter "none" for both status and diff.
    
    Users that chose submodules to get rid of long work tree scanning times
    might want to set the "dirty" option for those submodules. This brings
    back the pre 1.7.0 behavior, where submodule work trees were never
    scanned for modifications. By using "--ignore-submodules=none" on the
    command line the status and diff commands can be told to do a full scan.
    
    This option can be set to the following values (which have the same name
    and meaning as for the "--ignore-submodules" option of status and diff):
    
    "all": All changes to the submodule will be ignored.
    
    "dirty": Only differences of the commit recorded in the superproject and
    	the submodules HEAD will be considered modifications, all changes
    	to the work tree of the submodule will be ignored. When using this
    	value, the submodule will not be scanned for work tree changes at
    	all, leading to a performance benefit on large submodules.
    
    "untracked": Only untracked files in the submodules work tree are ignored,
    	a changed HEAD and/or modified files in the submodule will mark it
    	as modified.
    
    "none" (which is the default): Either untracked or modified files in a
    	submodules work tree or a difference between the subdmodules HEAD
    	and the commit recorded in the superproject will make it show up
    	as changed. This value is added as a new parameter for the
    	"--ignore-submodules" option of the diff family and "git status"
    	so the user can override the settings in the configuration.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jul 7, 2010
  1. @gitster

    Implement automatic fast-forward merge for submodules

    Heiko Voigt authored gitster committed
    This implements a simple merge strategy for submodule hashes. We check
    whether one side of the merge candidates is already contained in the
    other and then merge automatically.
    
    If both sides contain changes we search for a merge in the submodule.
    In case a single one exists we check that out and suggest it as the
    merge resolution. A list of candidates is returned when we find multiple
    merges that contain both sides of the changes.
    
    This is useful for a workflow in which the developers can publish topic
    branches in submodules and a separate maintainer merges them. In case
    the developers always wait until their branch gets merged before tracking
    them in the superproject all merges of branches that contain submodule
    changes will be resolved automatically. If developers choose to track
    their feature branch the maintainer might get a conflict but git will
    search the submodule for a merge and suggest it/them as a resolution.
    
    Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jun 25, 2010
  1. @jlehmann @gitster

    Add the option "--ignore-submodules" to "git status"

    jlehmann authored gitster committed
    In some use cases it is not desirable that "git status" considers
    submodules that only contain untracked content as dirty. This may happen
    e.g. when the submodule is not under the developers control and not all
    build generated files have been added to .gitignore by the upstream
    developers. Using the "untracked" parameter for the "--ignore-submodules"
    option disables checking for untracked content and lets git diff report
    them as changed only when they have new commits or modified content.
    
    Sometimes it is not wanted to have submodules show up as changed when they
    just contain changes to their work tree (this was the behavior before
    1.7.0). An example for that are scripts which just want to check for
    submodule commits while ignoring any changes to the work tree. Also users
    having large submodules known not to change might want to use this option,
    as the - sometimes substantial - time it takes to scan the submodule work
    tree(s) is saved when using the "dirty" parameter.
    
    And if you want to ignore any changes to submodules, you can now do that
    by using this option without parameters or with "all" (when the config
    option status.submodulesummary is set, using "all" will also suppress the
    output of the submodule summary).
    
    A new function handle_ignore_submodules_arg() is introduced to parse this
    option new to "git status" in a single location, as "git diff" already
    knew it.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Mar 14, 2010
  1. @jlehmann @gitster

    git status: ignoring untracked files must apply to submodules too

    jlehmann authored gitster committed
    Since 1.7.0 submodules are considered dirty when they contain untracked
    files. But when git status is called with the "-uno" option, the user
    asked to ignore untracked files, so they must be ignored in submodules
    too. To achieve this, the new flag DIFF_OPT_IGNORE_UNTRACKED_IN_SUBMODULES
    is introduced.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Mar 5, 2010
  1. @jlehmann @gitster

    git diff --submodule: Show detailed dirty status of submodules

    jlehmann authored gitster committed
    When encountering a dirty submodule while doing "git diff --submodule"
    print an extra line for new untracked content and another for modified
    but already tracked content. And if the HEAD of the submodule is equal
    to the ref diffed against in the superproject, drop the output which
    would just show the same SHA1s and no commit message headlines.
    
    To achieve that, the dirty_submodule bitfield is expanded to two bits.
    The output of "git status" inside the submodule is parsed to set the
    according bits.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 25, 2010
  1. @jlehmann @gitster

    Teach diff --submodule that modified submodule directory is dirty

    jlehmann authored gitster committed
    Since commit 8e08b4 git diff does append "-dirty" to the work tree side
    if the working directory of a submodule contains new or modified files.
    Lets do the same when the --submodule option is used.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 17, 2010
  1. @jlehmann @gitster

    Show submodules as modified when they contain a dirty work tree

    jlehmann authored gitster committed
    Until now a submodule only then showed up as modified in the supermodule
    when the last commit in the submodule differed from the one in the index
    or the diffed against commit of the superproject. A dirty work tree
    containing new untracked or modified files in a submodule was
    undetectable when looking at it from the superproject.
    
    Now git status and git diff (against the work tree) in the superproject
    will also display submodules as modified when they contain untracked or
    modified files, even if the compared ref matches the HEAD of the
    submodule.
    
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Oct 20, 2009
  1. @dscho @gitster

    Add the --submodule option to the diff option family

    dscho authored gitster committed
    When you use the option --submodule=log you can see the submodule
    summaries inlined in the diff, instead of not-quite-helpful SHA-1 pairs.
    
    The format imitates what "git submodule summary" shows.
    
    To do that, <path>/.git/objects/ is added to the alternate object
    databases (if that directory exists).
    
    This option was requested by Jens Lehmann at the GitTogether in Berlin.
    
    Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Something went wrong with that request. Please try again.