Commit Graph

74922 Commits

Author SHA1 Message Date
Karsten Blees
ab355636bb add infrastructure for read-only file system level caches
Add a macro to mark code sections that only read from the file system,
along with a config option and documentation.

This facilitates implementation of relatively simple file system level
caches without the need to synchronize with the file system.

Enable read-only sections for 'git status' and preload_index.

Signed-off-by: Karsten Blees <blees@dcon.de>
2017-08-04 23:01:20 +02:00
Karsten Blees
f50a55b328 Win32: make the lstat implementation pluggable
Emulating the POSIX lstat API on Windows via GetFileAttributes[Ex] is quite
slow. Windows operating system APIs seem to be much better at scanning the
status of entire directories than checking single files. A caching
implementation may improve performance by bulk-reading entire directories
or reusing data obtained via opendir / readdir.

Make the lstat implementation pluggable so that it can be switched at
runtime, e.g. based on a config option.

Signed-off-by: Karsten Blees <blees@dcon.de>
2017-08-04 23:01:20 +02:00
Karsten Blees
9fd3bd3263 Win32: Make the dirent implementation pluggable
Emulating the POSIX dirent API on Windows via FindFirstFile/FindNextFile is
pretty staightforward, however, most of the information provided in the
WIN32_FIND_DATA structure is thrown away in the process. A more
sophisticated implementation may cache this data, e.g. for later reuse in
calls to lstat.

Make the dirent implementation pluggable so that it can be switched at
runtime, e.g. based on a config option.

Define a base DIR structure with pointers to readdir/closedir that match
the opendir implementation (i.e. similar to vtable pointers in OOP).
Define readdir/closedir so that they call the function pointers in the DIR
structure. This allows to choose the opendir implementation on a
call-by-call basis.

Move the fixed sized dirent.d_name buffer to the dirent-specific DIR
structure, as d_name may be implementation specific (e.g. a caching
implementation may just set d_name to point into the cache instead of
copying the entire file name string).

Signed-off-by: Karsten Blees <blees@dcon.de>
2017-08-04 23:01:20 +02:00
Karsten Blees
0ee3272e10 Win32: dirent.c: Move opendir down
Move opendir down in preparation for the next patch.

Signed-off-by: Karsten Blees <blees@dcon.de>
2017-08-04 23:01:20 +02:00
Karsten Blees
5957d74d22 Win32: make FILETIME conversion functions public
Signed-off-by: Karsten Blees <blees@dcon.de>
2017-08-04 23:01:20 +02:00
Johannes Schindelin
d85e50754e mingw: unset PERL5LIB by default
Git for Windows ships with its own Perl interpreter, and insists on
using it, so it will most likely wreak havoc if PERL5LIB is set before
launching Git.

Let's just unset that environment variables when spawning processes.

To make this feature extensible (and overrideable), there is a new
config setting `core.unsetenvvars` that allows specifying a
comma-separated list of names to unset before spawning processes.

Reported by Gabriel Fuhrmann.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-08-04 23:01:19 +02:00
Johannes Schindelin
980de0b007 Move Windows-specific config settings into compat/mingw.c
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-08-04 23:01:19 +02:00
Johannes Schindelin
8594e4d028 Allow for platform-specific core.* config settings
In the Git for Windows project, we have ample precendent for config
settings that apply to Windows, and to Windows only.

Let's formalize this concept by introducing a platform_core_config()
function that can be #define'd in a platform-specific manner.

This will allow us to contain platform-specific code better, as the
corresponding variables no longer need to be exported so that they can
be defined in environment.c and be set in config.c

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-08-04 23:01:19 +02:00
Johannes Schindelin
e14c3892c4 Start the merging-rebase to v2.14.0
This commit starts the rebase of 656f071b2a to 2f13f6d0cd
2017-08-04 23:01:17 +02:00
Junio C Hamano
4384e3cde2 Git 2.14
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v2.14.0
2017-08-04 09:31:12 -07:00
Junio C Hamano
62ebe03b9e Merge branch 'ah/patch-id-doc'
Docfix.

* ah/patch-id-doc:
  doc: remove unsupported parameter from patch-id
2017-08-04 09:29:15 -07:00
Junio C Hamano
ddd1133c5e Merge branch 'as/diff-options-grammofix'
A grammofix.

* as/diff-options-grammofix:
  diff-options doc: grammar fix
2017-08-04 09:29:14 -07:00
Johannes Schindelin
9b9ea5f2d7 Merge branch 'http-ssl-backend'
This topic branch brings support for choosing cURL's SSL backend at
runtime via http.sslBackend, based on patches already submitted to the
cURL project and backported to cURL 7.54.1 as used in Git for Windows'
SDK.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-08-02 23:28:39 +02:00
Johannes Schindelin
d81216ee4d http: add support for selecting SSL backends at runtime
The Pull Request at https://github.com/curl/curl/pull/1601 adds support
for choosing the SSL backend at runtime to cURL, and will hopefully be
merged before version 7.56.0 comes out.

Git for Windows will ship with those patches backported to 7.54.1 (and
come August 9th, 2017, 7.55.0 and later).

This patch adds the Git side of that feature: by setting http.sslBackend
to "openssl" or "schannel", Git for Windows can now choose the SSL
backend at runtime.

This comes in handy because Secure Channel ("schannel") is the native
Windows solution, accessing the Windows Credential Store, thereby
allowing for enterprise-wide management of certificates. For historical
reasons, Git for Windows needs to support OpenSSL still, as it has
previously been the only supported SSL backend in Git for Windows for
almost a decade.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-08-02 23:28:24 +02:00
Junio C Hamano
384a8b271c Merge tag 'l10n-2.14.0-rnd2' of git://github.com/git-l10n/git-po
l10n for Git 2.14.0 round 2

* tag 'l10n-2.14.0-rnd2' of git://github.com/git-l10n/git-po:
  l10n: zh_CN: review for git v2.14.0 l10n
  l10n: ko.po: Update Korean translation
  l10n: zh_CN: for git v2.14.0 l10n round 2
  l10n: de.po: various fixes in German translation
  l10n: ru.po: update Russian translation
  l10n: fr.po v2.14.0 rnd 2
  l10n: fr.po Fix some french typos
  l10n: fr.po Fix typo
  l10n: fr.po Fix some translations
  l10n: de.po: update German translation
  l10n: vi.po (3213t): Updated 9 new strings
  l10n: Update Catalan translation
  l10n: bg.po: Updated Bulgarian translation (3213t)
2017-08-02 10:52:33 -07:00
Jiang Xin
554e850170 l10n: zh_CN: review for git v2.14.0 l10n
Reviewed-by: 依云 <lilydjwg@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2017-08-02 08:02:37 +08:00
Junio C Hamano
c3eb4e6bfe Sync with v2.13.4 2017-08-01 11:46:59 -07:00
Junio C Hamano
cf8899d285 Git 2.13.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
v2.13.4
2017-08-01 11:45:17 -07:00
Changwoo Ryu
3347e76939 l10n: ko.po: Update Korean translation
Signed-off-by: Changwoo Ryu <cwryu@debian.org>
2017-08-01 12:32:00 +09:00
Jiang Xin
a4f16749d2 l10n: zh_CN: for git v2.14.0 l10n round 2
Translate new l10n messages for git 2.14.0, and update translations on
"stash".

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2017-08-01 09:26:19 +08:00
Junio C Hamano
e2d9c46130 Sync with maint
* maint:
  Preparation for 2.13.4 continues
2017-07-31 13:52:53 -07:00
Junio C Hamano
c94ef19041 Preparation for 2.13.4 continues
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-07-31 13:52:40 -07:00
Junio C Hamano
0baf0b839b Merge branch 'ks/doc-fixes' into maint
Doc clean-up.

* ks/doc-fixes:
  doc: reformat the paragraph containing the 'cut-line'
  doc: camelCase the i18n config variables to improve readability
2017-07-31 13:51:06 -07:00
Junio C Hamano
42dbdef1ca Merge branch 'jk/test-copy-bytes-fix' into maint
A test fix.

* jk/test-copy-bytes-fix:
  t: handle EOF in test_copy_bytes()
2017-07-31 13:51:06 -07:00
Junio C Hamano
c6767f45e3 Merge branch 'pw/unquote-path-in-git-pm' into maint
Code refactoring.

* pw/unquote-path-in-git-pm:
  t9700: add tests for Git::unquote_path()
  Git::unquote_path(): throw an exception on bad path
  Git::unquote_path(): handle '\a'
  add -i: move unquote_path() to Git.pm
2017-07-31 13:51:05 -07:00
Junio C Hamano
133578a020 Merge branch 'jk/gc-pre-detach-under-hook' into maint
We run an early part of "git gc" that deals with refs before
daemonising (and not under lock) even when running a background
auto-gc, which caused multiple gc processes attempting to run the
early part at the same time.  This is now prevented by running the
early part also under the GC lock.

* jk/gc-pre-detach-under-hook:
  gc: run pre-detach operations under lock
2017-07-31 13:51:05 -07:00
Junio C Hamano
309ff914d5 Merge branch 'jn/hooks-pre-rebase-sample-fix' into maint
Code clean-up, that makes us in sync with Debian by one patch.

* jn/hooks-pre-rebase-sample-fix:
  pre-rebase hook: capture documentation in a <<here document
2017-07-31 13:51:05 -07:00
Junio C Hamano
4f77f618d9 Merge branch 'rs/progress-overall-throughput-at-the-end' into maint
The progress meter did not give a useful output when we haven't had
0.5 seconds to measure the throughput during the interval.  Instead
show the overall throughput rate at the end, which is a much more
useful number.

* rs/progress-overall-throughput-at-the-end:
  progress: show overall rate in last update
2017-07-31 13:51:04 -07:00
Junio C Hamano
49f1e2eb1b Merge branch 'tb/push-to-cygwin-unc-path' into maint
On Cygwin, similar to Windows, "git push //server/share/repository"
ought to mean a repository on a network share that can be accessed
locally, but this did not work correctly due to stripping the double
slashes at the beginning.

This may need to be heavily tested before it gets unleashed to the
wild, as the change is at a fairly low-level code and would affect
not just the code to decide if the push destination is local.  There
may be unexpected fallouts in the path normalization.

* tb/push-to-cygwin-unc-path:
  cygwin: allow pushing to UNC paths
2017-07-31 13:51:04 -07:00
Junio C Hamano
bc2c50fc2c Merge branch 'rs/apply-avoid-over-reading' into maint
Code cleanup.

* rs/apply-avoid-over-reading:
  apply: use strcmp(3) for comparing strings in gitdiff_verify_name()
  apply: use starts_with() in gitdiff_verify_name()
2017-07-31 13:51:04 -07:00
Junio C Hamano
483709ab4d Merge branch 'js/blame-lib'
A hotfix to a topic already in 'master'.

* js/blame-lib:
  blame: fix memory corruption scrambling revision name in error message
2017-07-31 13:05:15 -07:00
Anthony Sottile
bc9b7e207f diff-options doc: grammar fix
Signed-off-by: Anthony Sottile <asottile@umich.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-07-31 09:57:12 -07:00
Hartmut Henkel
8d44797cc9 l10n: de.po: various fixes in German translation
Signed-off-by: Hartmut Henkel <henkel@vh-s.de>
Helped-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Matthias Rüster <matthias.ruester@gmail.com>
2017-07-30 17:21:06 +02:00
Jiang Xin
7873fb63f8 Merge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru
* 'russian-l10n' of https://github.com/DJm00n/git-po-ru:
  l10n: ru.po: update Russian translation
2017-07-30 22:47:47 +08:00
Dimitriy Ryazantcev
a65a75dfd6 l10n: ru.po: update Russian translation
Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
2017-07-30 12:35:40 +03:00
Andreas Heiduk
ac05222b31 doc: remove unsupported parameter from patch-id
The patch is read from standard input and not from a parameter.

Signed-off-by: Andreas Heiduk <asheiduk@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-07-28 14:41:32 -07:00
Jiang Xin
79e8ee89ae Merge branch 'master' of https://github.com/ralfth/git-po-de
* 'master' of https://github.com/ralfth/git-po-de:
  l10n: de.po: update German translation
2017-07-27 23:12:11 +08:00
Jiang Xin
437d212413 Merge branch 'fr_l10n_v2.14.0rnd2' of git://github.com/jnavila/git
* 'fr_l10n_v2.14.0rnd2' of git://github.com/jnavila/git:
  l10n: fr.po v2.14.0 rnd 2
  l10n: fr.po Fix some french typos
  l10n: fr.po Fix typo
  l10n: fr.po Fix some translations
2017-07-27 23:10:13 +08:00
Jean-Noel Avila
12142e1bcb l10n: fr.po v2.14.0 rnd 2
Signed-off-by: Jean-Noel Avila <jean-noel.avila@scantech.fr>
2017-07-27 04:29:15 +02:00
Sylvestre Ledru
eb7bb1cc09 l10n: fr.po Fix some french typos
Signed-off-by: Sylvestre Ledru <sylvestre@debian.org>
2017-07-27 04:28:56 +02:00
Louis
694f610d65 l10n: fr.po Fix typo
Signed-off-by: Louis <spalax@gresille.org>
2017-07-27 04:22:23 +02:00
Hugues Peccatte
8430988d35 l10n: fr.po Fix some translations
Signed-off-by: Hugues Peccatte <hugues.peccatte@aareon.fr>
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
2017-07-27 04:22:19 +02:00
Ralf Thielow
2166cd5af0 l10n: de.po: update German translation
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2017-07-26 18:22:27 +02:00
Johannes Schindelin
34cf36e6e0 fixup! Win32: add a cache below mingw's lstat and dirent implementations 2017-07-26 11:01:40 +02:00
Johannes Schindelin
0c097c8522 fixup! Help debugging with MSys2 by optionally executing bash with strace 2017-07-26 11:00:51 +02:00
Johannes Schindelin
08770d6702 Merge branch 'bw/config-h'
This backports f31d23a399 (Merge branch 'bw/config-h', 2017-06-24) from
upstream Git's `master` branch, plus a patch that seems to be required
to let the test suite pass.

This topic branch fixes problems when looking up aliases in worktrees.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-07-26 00:37:57 +02:00
Johannes Schindelin
58a199d8ee t5580: test cloning without file://, test fetching via UNC paths
It gets a bit silly to add the commands to the name of the test script,
so let's just rename it while we're testing more UNC stuff.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-07-26 00:37:57 +02:00
Johannes Schindelin
ace856ea4c do_git_config_sequence(): fall back to git_dir if commondir is NULL
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-07-26 00:37:57 +02:00
Johannes Schindelin
d649495892 t5580: test cloning without file://, test fetching via UNC paths
It gets a bit silly to add the commands to the name of the test script,
so let's just rename it while we're testing more UNC stuff.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-07-26 00:37:57 +02:00
Johannes Schindelin
49c13ca5a8 Merge branch 'unc-path-w-backslashes'
This topic branch addresses a problem identified in
https://github.com/git-for-windows/git/issues/439: while
cloning/fetching/pushing from "POSIX-ified UNC paths" (i.e. UNC paths
whose backslashes have been converted to forward slashes) works for some
time now, true UNC paths (with backslashes left intact) were handled
incorrectly. Example:

	git clone //myserver/folder/repo.git

works, but

	git clone \\myserver\folder\repo.git

(in CMD; in Git Bash, the backslashes would need to be doubled) used to
fail. The reason was an unexpected difference in command-line handling
between Win32 executables and MSYS2 ones (such as the shell that is used
by git-clone.exe to spawn git-upload-pack.exe).

This topic branch features a workaround *just* for the case where Git
passes stuff through sh.exe (which covers quite a few use cases,
though).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2017-07-26 00:37:54 +02:00