1. 23 12月, 2014 11 次提交
    • J
      Merge branch 'pb/send-email-te' · 2374f1df
      Junio C Hamano 提交于
      "git send-email" learned "--transfer-encoding" option to force
      a non-fault Content-Transfer-Encoding header (e.g. base64).
      
      * pb/send-email-te:
        git-send-email: add --transfer-encoding option
        git-send-email: delay creation of MIME headers
      2374f1df
    • J
      Merge branch 'pb/am-message-id-footer' · fa7f51d5
      Junio C Hamano 提交于
      "git am" learned "--message-id" option to copy the message ID of
      the incoming e-mail to the log message of resulting commit.
      
      * pb/am-message-id-footer:
        git-am: add --message-id/--no-message-id
        git-mailinfo: add --message-id
      fa7f51d5
    • J
      Merge branch 'mh/simplify-repack-without-refs' · a7ddaa8e
      Junio C Hamano 提交于
      "git remote update --prune" to drop many refs has been optimized.
      
      * mh/simplify-repack-without-refs:
        sort_string_list(): rename to string_list_sort()
        prune_remote(): iterate using for_each_string_list_item()
        prune_remote(): rename local variable
        repack_without_refs(): make the refnames argument a string_list
        prune_remote(): sort delete_refs_list references en masse
        prune_remote(): initialize both delete_refs lists in a single loop
        prune_remote(): exit early if there are no stale references
      a7ddaa8e
    • J
      Merge branch 'dw/shell-basename-dashdash-before-stripping-leading-dash-from-login' · 8e606f97
      Junio C Hamano 提交于
      * dw/shell-basename-dashdash-before-stripping-leading-dash-from-login:
        git-sh-setup.sh: use dashdash with basename call
      8e606f97
    • J
      Merge branch 'rj/no-xopen-source-for-cygwin' · 7665d9c3
      Junio C Hamano 提交于
      Avoid compilation warnings on recent gcc toolchain on Cygwin.
      
      * rj/no-xopen-source-for-cygwin:
        git-compat-util.h: don't define _XOPEN_SOURCE on cygwin
      7665d9c3
    • J
      Merge branch 'js/t5000-dont-copy-bin-sh' · 4762c7b4
      Junio C Hamano 提交于
      * js/t5000-dont-copy-bin-sh:
        t5000 on Windows: do not mistake "sh.exe" as "sh"
      4762c7b4
    • J
      Merge branch 'jc/refer-to-t-readme-from-submitting-patches' · 63296d58
      Junio C Hamano 提交于
      * jc/refer-to-t-readme-from-submitting-patches:
        t/README: justify why "! grep foo" is sufficient
        SubmittingPatches: refer to t/README for tests
      63296d58
    • J
      Merge branch 'tb/config-core-filemode-check-on-broken-fs' · 168ab99d
      Junio C Hamano 提交于
      Some filesystems assign filemodes in a strange way, fooling then
      automatic "filemode trustability" check done during a new
      repository creation.
      
      * tb/config-core-filemode-check-on-broken-fs:
        init-db: improve the filemode trustability check
      168ab99d
    • J
      Merge branch 'mg/add-ignore-errors' · 01782070
      Junio C Hamano 提交于
      "git add --ignore-errors ..." did not ignore an error to
      give a file that did not exist.
      
      * mg/add-ignore-errors:
        add: ignore only ignored files
      01782070
    • J
      Merge branch 'jk/lock-ref-sha1-basic-return-errors' · 3cdb0cb6
      Junio C Hamano 提交于
      Correct an API anomaly.
      
      * jk/lock-ref-sha1-basic-return-errors:
        lock_ref_sha1_basic: do not die on locking errors
      3cdb0cb6
    • J
      Merge branch 'cc/interpret-trailers-more' · 0ed8a4e1
      Junio C Hamano 提交于
      "git interpret-trailers" learned to properly handle the
      "Conflicts:" block at the end.
      
      * cc/interpret-trailers-more:
        trailer: add test with an old style conflict block
        trailer: reuse ignore_non_trailer() to ignore conflict lines
        commit: make ignore_non_trailer() non static
        merge & sequencer: turn "Conflicts:" hint into a comment
        builtin/commit.c: extract ignore_non_trailer() helper function
        merge & sequencer: unify codepaths that write "Conflicts:" hint
        builtin/merge.c: drop a parameter that is never used
      0ed8a4e1
  2. 19 12月, 2014 1 次提交
    • J
      Sync with v2.2.1 · 3f150980
      Junio C Hamano 提交于
      * maint:
        Git 2.2.1
        Git 2.1.4
        Git 2.0.5
        Git 1.9.5
        Git 1.8.5.6
        fsck: complain about NTFS ".git" aliases in trees
        read-cache: optionally disallow NTFS .git variants
        path: add is_ntfs_dotgit() helper
        fsck: complain about HFS+ ".git" aliases in trees
        read-cache: optionally disallow HFS+ .git variants
        utf8: add is_hfs_dotgit() helper
        fsck: notice .git case-insensitively
        t1450: refactor ".", "..", and ".git" fsck tests
        verify_dotfile(): reject .git case-insensitively
        read-tree: add tests for confusing paths like ".." and ".git"
        unpack-trees: propagate errors adding entries to the index
      3f150980
  3. 18 12月, 2014 21 次提交
    • J
      Git 2.2.1 · 9b7cbb31
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9b7cbb31
    • J
      Sync with v2.1.4 · 77933f44
      Junio C Hamano 提交于
      * maint-2.1:
        Git 2.1.4
        Git 2.0.5
        Git 1.9.5
        Git 1.8.5.6
        fsck: complain about NTFS ".git" aliases in trees
        read-cache: optionally disallow NTFS .git variants
        path: add is_ntfs_dotgit() helper
        fsck: complain about HFS+ ".git" aliases in trees
        read-cache: optionally disallow HFS+ .git variants
        utf8: add is_hfs_dotgit() helper
        fsck: notice .git case-insensitively
        t1450: refactor ".", "..", and ".git" fsck tests
        verify_dotfile(): reject .git case-insensitively
        read-tree: add tests for confusing paths like ".." and ".git"
        unpack-trees: propagate errors adding entries to the index
      77933f44
    • J
      Git 2.1.4 · 8e36a6d5
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8e36a6d5
    • J
      Sync with v2.0.5 · 58f1d950
      Junio C Hamano 提交于
      * maint-2.0:
        Git 2.0.5
        Git 1.9.5
        Git 1.8.5.6
        fsck: complain about NTFS ".git" aliases in trees
        read-cache: optionally disallow NTFS .git variants
        path: add is_ntfs_dotgit() helper
        fsck: complain about HFS+ ".git" aliases in trees
        read-cache: optionally disallow HFS+ .git variants
        utf8: add is_hfs_dotgit() helper
        fsck: notice .git case-insensitively
        t1450: refactor ".", "..", and ".git" fsck tests
        verify_dotfile(): reject .git case-insensitively
        read-tree: add tests for confusing paths like ".." and ".git"
        unpack-trees: propagate errors adding entries to the index
      58f1d950
    • J
      Git 2.0.5 · 9a8c2b67
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9a8c2b67
    • J
      Sync with v1.9.5 · 5e519fb8
      Junio C Hamano 提交于
      * maint-1.9:
        Git 1.9.5
        Git 1.8.5.6
        fsck: complain about NTFS ".git" aliases in trees
        read-cache: optionally disallow NTFS .git variants
        path: add is_ntfs_dotgit() helper
        fsck: complain about HFS+ ".git" aliases in trees
        read-cache: optionally disallow HFS+ .git variants
        utf8: add is_hfs_dotgit() helper
        fsck: notice .git case-insensitively
        t1450: refactor ".", "..", and ".git" fsck tests
        verify_dotfile(): reject .git case-insensitively
        read-tree: add tests for confusing paths like ".." and ".git"
        unpack-trees: propagate errors adding entries to the index
      5e519fb8
    • J
      Git 1.9.5 · 83332636
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      83332636
    • J
      Sync with v1.8.5.6 · 6898b797
      Junio C Hamano 提交于
      * maint-1.8.5:
        Git 1.8.5.6
        fsck: complain about NTFS ".git" aliases in trees
        read-cache: optionally disallow NTFS .git variants
        path: add is_ntfs_dotgit() helper
        fsck: complain about HFS+ ".git" aliases in trees
        read-cache: optionally disallow HFS+ .git variants
        utf8: add is_hfs_dotgit() helper
        fsck: notice .git case-insensitively
        t1450: refactor ".", "..", and ".git" fsck tests
        verify_dotfile(): reject .git case-insensitively
        read-tree: add tests for confusing paths like ".." and ".git"
        unpack-trees: propagate errors adding entries to the index
      6898b797
    • J
      Git 1.8.5.6 · 5c8213a7
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5c8213a7
    • J
      Merge branch 'dotgit-case-maint-1.8.5' into maint-1.8.5 · 2aa91008
      Junio C Hamano 提交于
      * dotgit-case-maint-1.8.5:
        fsck: complain about NTFS ".git" aliases in trees
        read-cache: optionally disallow NTFS .git variants
        path: add is_ntfs_dotgit() helper
        fsck: complain about HFS+ ".git" aliases in trees
        read-cache: optionally disallow HFS+ .git variants
        utf8: add is_hfs_dotgit() helper
        fsck: notice .git case-insensitively
        t1450: refactor ".", "..", and ".git" fsck tests
        verify_dotfile(): reject .git case-insensitively
        read-tree: add tests for confusing paths like ".." and ".git"
        unpack-trees: propagate errors adding entries to the index
      2aa91008
    • J
      fsck: complain about NTFS ".git" aliases in trees · d08c13b9
      Johannes Schindelin 提交于
      Now that the index can block pathnames that can be mistaken
      to mean ".git" on NTFS and FAT32, it would be helpful for
      fsck to notice such problematic paths. This lets servers
      which use receive.fsckObjects block them before the damage
      spreads.
      
      Note that the fsck check is always on, even for systems
      without core.protectNTFS set. This is technically more
      restrictive than we need to be, as a set of users on ext4
      could happily use these odd filenames without caring about
      NTFS.
      
      However, on balance, it's helpful for all servers to block
      these (because the paths can be used for mischief, and
      servers which bother to fsck would want to stop the spread
      whether they are on NTFS themselves or not), and hardly
      anybody will be affected (because the blocked names are
      variants of .git or git~1, meaning mischief is almost
      certainly what the tree author had in mind).
      
      Ideally these would be controlled by a separate
      "fsck.protectNTFS" flag. However, it would be much nicer to
      be able to enable/disable _any_ fsck flag individually, and
      any scheme we choose should match such a system. Given the
      likelihood of anybody using such a path in practice, it is
      not unreasonable to wait until such a system materializes.
      Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d08c13b9
    • J
      read-cache: optionally disallow NTFS .git variants · 2b4c6efc
      Johannes Schindelin 提交于
      The point of disallowing ".git" in the index is that we
      would never want to accidentally overwrite files in the
      repository directory. But this means we need to respect the
      filesystem's idea of when two paths are equal. The prior
      commit added a helper to make such a comparison for NTFS
      and FAT32; let's use it in verify_path().
      
      We make this check optional for two reasons:
      
        1. It restricts the set of allowable filenames, which is
           unnecessary for people who are not on NTFS nor FAT32.
           In practice this probably doesn't matter, though, as
           the restricted names are rather obscure and almost
           certainly would never come up in practice.
      
        2. It has a minor performance penalty for every path we
           insert into the index.
      
      This patch ties the check to the core.protectNTFS config
      option. Though this is expected to be most useful on Windows,
      we allow it to be set everywhere, as NTFS may be mounted on
      other platforms. The variable does default to on for Windows,
      though.
      Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2b4c6efc
    • J
      path: add is_ntfs_dotgit() helper · 1d1d69bc
      Johannes Schindelin 提交于
      We do not allow paths with a ".git" component to be added to
      the index, as that would mean repository contents could
      overwrite our repository files. However, asking "is this
      path the same as .git" is not as simple as strcmp() on some
      filesystems.
      
      On NTFS (and FAT32), there exist so-called "short names" for
      backwards-compatibility: 8.3 compliant names that refer to the same files
      as their long names. As ".git" is not an 8.3 compliant name, a short name
      is generated automatically, typically "git~1".
      
      Depending on the Windows version, any combination of trailing spaces and
      periods are ignored, too, so that both "git~1." and ".git." still refer
      to the Git directory. The reason is that 8.3 stores file names shorter
      than 8 characters with trailing spaces. So literally, it does not matter
      for the short name whether it is padded with spaces or whether it is
      shorter than 8 characters, it is considered to be the exact same.
      
      The period is the separator between file name and file extension, and
      again, an empty extension consists just of spaces in 8.3 format. So
      technically, we would need only take care of the equivalent of this
      regex:
              (\.git {0,4}|git~1 {0,3})\. {0,3}
      
      However, there are indications that at least some Windows versions might
      be more lenient and accept arbitrary combinations of trailing spaces and
      periods and strip them out. So we're playing it real safe here. Besides,
      there can be little doubt about the intention behind using file names
      matching even the more lenient pattern specified above, therefore we
      should be fine with disallowing such patterns.
      
      Extra care is taken to catch names such as '.\\.git\\booh' because the
      backslash is marked as a directory separator only on Windows, and we want
      to use this new helper function also in fsck on other platforms.
      
      A big thank you goes to Ed Thomson and an unnamed Microsoft engineer for
      the detailed analysis performed to come up with the corresponding fixes
      for libgit2.
      
      This commit adds a function to detect whether a given file name can refer
      to the Git directory by mistake.
      Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      1d1d69bc
    • J
      fsck: complain about HFS+ ".git" aliases in trees · a18fcc9f
      Jeff King 提交于
      Now that the index can block pathnames that case-fold to
      ".git" on HFS+, it would be helpful for fsck to notice such
      problematic paths. This lets servers which use
      receive.fsckObjects block them before the damage spreads.
      
      Note that the fsck check is always on, even for systems
      without core.protectHFS set. This is technically more
      restrictive than we need to be, as a set of users on ext4
      could happily use these odd filenames without caring about
      HFS+.
      
      However, on balance, it's helpful for all servers to block
      these (because the paths can be used for mischief, and
      servers which bother to fsck would want to stop the spread
      whether they are on HFS+ themselves or not), and hardly
      anybody will be affected (because the blocked names are
      variants of .git with invisible Unicode code-points mixed
      in, meaning mischief is almost certainly what the tree
      author had in mind).
      
      Ideally these would be controlled by a separate
      "fsck.protectHFS" flag. However, it would be much nicer to
      be able to enable/disable _any_ fsck flag individually, and
      any scheme we choose should match such a system. Given the
      likelihood of anybody using such a path in practice, it is
      not unreasonable to wait until such a system materializes.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a18fcc9f
    • J
      read-cache: optionally disallow HFS+ .git variants · a42643aa
      Jeff King 提交于
      The point of disallowing ".git" in the index is that we
      would never want to accidentally overwrite files in the
      repository directory. But this means we need to respect the
      filesystem's idea of when two paths are equal. The prior
      commit added a helper to make such a comparison for HFS+;
      let's use it in verify_path.
      
      We make this check optional for two reasons:
      
        1. It restricts the set of allowable filenames, which is
           unnecessary for people who are not on HFS+. In practice
           this probably doesn't matter, though, as the restricted
           names are rather obscure and almost certainly would
           never come up in practice.
      
        2. It has a minor performance penalty for every path we
           insert into the index.
      
      This patch ties the check to the core.protectHFS config
      option. Though this is expected to be most useful on OS X,
      we allow it to be set everywhere, as HFS+ may be mounted on
      other platforms. The variable does default to on for OS X,
      though.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a42643aa
    • J
      utf8: add is_hfs_dotgit() helper · 6162a1d3
      Jeff King 提交于
      We do not allow paths with a ".git" component to be added to
      the index, as that would mean repository contents could
      overwrite our repository files. However, asking "is this
      path the same as .git" is not as simple as strcmp() on some
      filesystems.
      
      HFS+'s case-folding does more than just fold uppercase into
      lowercase (which we already handle with strcasecmp). It may
      also skip past certain "ignored" Unicode code points, so
      that (for example) ".gi\u200ct" is mapped ot ".git".
      
      The full list of folds can be found in the tables at:
      
        https://www.opensource.apple.com/source/xnu/xnu-1504.15.3/bsd/hfs/hfscommon/Unicode/UCStringCompareData.h
      
      Implementing a full "is this path the same as that path"
      comparison would require us importing the whole set of
      tables.  However, what we want to do is much simpler: we
      only care about checking ".git". We know that 'G' is the
      only thing that folds to 'g', and so on, so we really only
      need to deal with the set of ignored code points, which is
      much smaller.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6162a1d3
    • J
      fsck: notice .git case-insensitively · 76e86fc6
      Jeff King 提交于
      We complain about ".git" in a tree because it cannot be
      loaded into the index or checked out. Since we now also
      reject ".GIT" case-insensitively, fsck should notice the
      same, so that errors do not propagate.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      76e86fc6
    • J
      t1450: refactor ".", "..", and ".git" fsck tests · 450870cb
      Jeff King 提交于
      We check that fsck notices and complains about confusing
      paths in trees. However, there are a few shortcomings:
      
        1. We check only for these paths as file entries, not as
           intermediate paths (so ".git" and not ".git/foo").
      
        2. We check "." and ".." together, so it is possible that
           we notice only one and not the other.
      
        3. We repeat a lot of boilerplate.
      
      Let's use some loops to be more thorough in our testing, and
      still end up with shorter code.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      450870cb
    • J
      verify_dotfile(): reject .git case-insensitively · cc2fc7c2
      Jeff King 提交于
      We do not allow ".git" to enter into the index as a path
      component, because checking out the result to the working
      tree may causes confusion for subsequent git commands.
      However, on case-insensitive file systems, ".Git" or ".GIT"
      is the same. We should catch and prevent those, too.
      
      Note that technically we could allow this for repos on
      case-sensitive filesystems. But there's not much point. It's
      unlikely that anybody cares, and it creates a repository
      that is unexpectedly non-portable to other systems.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      cc2fc7c2
    • J
      read-tree: add tests for confusing paths like ".." and ".git" · 96b50cc1
      Jeff King 提交于
      We should prevent nonsense paths from entering the index in
      the first place, as they can cause confusing results if they
      are ever checked out into the working tree. We already do
      so, but we never tested it.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      96b50cc1
    • J
      unpack-trees: propagate errors adding entries to the index · 46169180
      Jeff King 提交于
      When unpack_trees tries to write an entry to the index,
      add_index_entry may report an error to stderr, but we ignore
      its return value. This leads to us returning a successful
      exit code for an operation that partially failed. Let's make
      sure to propagate this code.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      46169180
  4. 13 12月, 2014 7 次提交