summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* perf: add a performance test for core.fsmonitorab/wip-fsmonitorÆvar Arnfjörð Bjarmason2017-06-041-0/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a performance test for the new core.fsmonitor facility using the sample query-fsmonitor hook. This is WIP code for the reasons explained in the setup comments, unfortunately the perf code doesn't easily allow you to run different setup code for different versions you're testing. This test will stop working if the fsmonitor is merged into the master branch. Output against linxu.git: $ GIT_PERF_REPEAT_COUNT=10 GIT_PERF_LARGE_REPO=~/g/linux GIT_PERF_MAKE_OPTS='-j8' ./run origin/master avar/fsmonitor ./p7519-fsmonitor.sh [...] Test origin/master avar/fsmonitor ----------------------------------------------------------------------- 7519.2: status (first) 0.08(0.04+0.09) 0.12(0.07+0.10) +50.0% 7519.3: status (subsequent) 0.08(0.04+0.09) 0.12(0.06+0.11) +50.0% 7519.4: status -uno 0.02(0.02+0.05) 0.06(0.05+0.06) +200.0% 7519.5: status -uall 0.08(0.06+0.07) 0.12(0.07+0.10) +50.0% And against a larger in-house monorepo I have here, with the same options (except the repo path): Test origin/master avar/fsmonitor ----------------------------------------------------------------------- 7519.2: status (first) 0.20(0.11+0.18) 0.27(0.15+0.21) +35.0% 7519.3: status (subsequent) 0.20(0.11+0.18) 0.27(0.15+0.21) +35.0% 7519.4: status -uno 0.04(0.03+0.10) 0.22(0.08+0.12) +450.0% 7519.5: status -uall 0.20(0.13+0.16) 0.27(0.18+0.19) +35.0% Against linux.git with a hack to flush the FS cache (on Linux) before running the first 'git status', only running one test so the result isn't discarded as the slowest of N: $ GIT_PERF_REPEAT_COUNT=1 GIT_PERF_LARGE_REPO=~/g/linux GIT_PERF_MAKE_COMMAND='sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null && make -j8' ./run origin/master avar/fsmonitor ./p7519-fsmonitor.sh [...] Test origin/master avar/fsmonitor ------------------------------------------------------------------------ 7519.2: status (first) 0.30(0.18+0.10) 8.26(0.22+0.10) +2653.3% 7519.3: status (subsequent) 0.08(0.04+0.08) 0.81(0.09+0.07) +912.5% 7519.4: status -uno 0.02(0.01+0.06) 0.08(0.04+0.07) +300.0% 7519.5: status -uall 0.08(0.06+0.07) 0.15(0.08+0.09) +87.5% Now obviously due to 1 run that has a lot of noise, but I would expect that first invocation to be blindingly fast since watchman has info on what files were modified since the cache was flushed. The same on the large monorepo noted above: Test origin/master avar/fsmonitor ----------------------------------------------------------------------- 7519.2: status (first) 0.59(0.28+0.24) 0.93(0.35+0.19) +57.6% 7519.3: status (subsequent) 0.20(0.10+0.19) 0.28(0.16+0.20) +40.0% 7519.4: status -uno 0.04(0.04+0.09) 0.11(0.08+0.12) +175.0% 7519.5: status -uall 0.29(0.11+0.18) 0.40(0.16+0.19) +37.9% Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* fsmonitor: add a sample query-fsmonitor hook script for WatchmanBen Peart2017-06-021-0/+60
| | | | | | | | | | | | | | | | | | | | | This hook script integrates the new fsmonitor capabilities of git with the cross platform Watchman file watching service. To use the script: Download and install Watchman from https://facebook.github.io/watchman/ and instruct Watchman to watch your working directory for changes ('watchman watch-project /usr/src/git'). Rename the sample integration hook from query-fsmonitor.sample to query-fsmonitor. Configure git to use the extension ('git config core.fsmonitor true') and optionally turn on the untracked cache for optimal performance ('git config core.untrackedcache true'). Signed-off-by: Ben Peart <benpeart@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* fsmonitor: add documentation for the fsmonitor extensionBen Peart2017-06-023-0/+49
| | | | | | | | This includes the core.fsmonitor setting, the query-fsmonitor hook, and the fsmonitor index extension. Signed-off-by: Ben Peart <benpeart@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* fsmonitor: add test cases for fsmonitor extensionBen Peart2017-06-021-0/+173
| | | | | | | | | | | | | | | | | | | | | | Add test cases that ensure status results are correct when using the new fsmonitor extension. Test untracked, modified, and new files by ensuring the results are identical to when not using the extension. Add a test to ensure updates to the index properly mark corresponding entries in the index extension as dirty so that the status is correct after commands that modify the index but don't trigger changes in the working directory. Add a test that verifies that if the fsmonitor extension doesn't tell git about a change, it doesn't discover it on its own. This ensures git is honoring the extension and that we get the performance benefits desired. All test hooks output a marker file that is used to ensure the hook was actually used to generate the test results. Signed-off-by: Ben Peart <benpeart@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* fsmonitor: teach git to optionally utilize a file system monitor to speed up ↵Ben Peart2017-05-2612-2/+304
| | | | | | | | | | | | | | | | | | | | | | | | | | | detecting new or changed files. When the index is read from disk, the query-fsmonitor index extension is used to flag the last known potentially dirty index and untracked cache entries. If git finds out some entries are 'fsmonitor-dirty', but are really unchanged (e.g. the file was changed, then reverted back), then Git will clear the marking in the extension. If git adds or updates an index entry, it is marked 'fsmonitor-dirty' to ensure it is checked for changes in the working directory. Before the 'fsmonitor-dirty' flags are used to limit the scope of the files to be checked, the query-fsmonitor hook proc is called with the time the index was last updated. The hook proc returns the list of files changed since that last updated time and the list of potentially dirty entries is updated to reflect the current state. refresh_index() and valid_cached_dir() are updated so that any entry not flagged as potentially dirty is not checked as it cannot have any changes. Signed-off-by: Ben Peart <benpeart@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* dir: make lookup_untracked() available outside of dir.cBen Peart2017-05-202-1/+4
| | | | | | | | | Remove the static qualifier from lookup_untracked() and make it available to other modules by exporting it from dir.h. This will be used later when we need to find entries to mark 'fsmonitor dirty.' Signed-off-by: Ben Peart <benpeart@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* bswap: add 64 bit endianness helper get_be64Ben Peart2017-05-201-0/+4
| | | | | | | | Add a new get_be64 macro to enable 64 bit endian conversions on memory that may or may not be aligned. Signed-off-by: Ben Peart <benpeart@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Git 2.13v2.13.0Junio C Hamano2017-05-093-1/+14
| | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge tag 'l10n-2.13.0-rnd2.1' of git://github.com/git-l10n/git-poJunio C Hamano2017-05-099-19174/+23732
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l10n for Git 2.13.0 round 2.1 * tag 'l10n-2.13.0-rnd2.1' of git://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.13.0 l10n round 2 l10n: sv.po: Update Swedish translation (3195t0f0u) l10n: zh_CN: review for git v2.13.0 l10n round 1 l10n: Update Catalan translation l10n: bg.po: Updated Bulgarian translation (3195t) l10n: fr.po v2.13 rnd 2 l10n: de.po: translate 4 new messages l10n: de.po: update German translation l10n: de.po: lower case after semi-colon l10n: vi.po(3195t): Update translation for v2.13.0 round 2 l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed) l10n: zh_CN: for git v2.13.0 l10n round 1 l10n: fr.po v2.13 round 1 l10n: pt_PT: update Portuguese translation l10n: bg.po: Updated Bulgarian translation (3201t) l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0 l10n: sv.po: Update Swedish translation (3199t0f0u) l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)
| * Merge branch 'master' of git://github.com/nafmo/git-l10n-svJiang Xin2017-05-091-434/+439
| |\ | | | | | | | | | | | | * 'master' of git://github.com/nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation (3195t0f0u)
| | * l10n: sv.po: Update Swedish translation (3195t0f0u)Peter Krefting2017-05-091-434/+439
| | | | | | | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| * | l10n: zh_CN: for git v2.13.0 l10n round 2Jiang Xin2017-05-091-429/+436
| |/ | | | | | | | | | | Translate 4 messages (3195t0f0u) for git v2.13.0-rc2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| * l10n: zh_CN: review for git v2.13.0 l10n round 1Ray Chen2017-05-091-17/+17
| | | | | | | | Signed-off-by: Ray Chen <oldsharp@gmail.com>
| * Merge branch 'master' of https://github.com/vnwildman/gitJiang Xin2017-05-091-431/+438
| |\ | | | | | | | | | | | | * 'master' of https://github.com/vnwildman/git: l10n: vi.po(3195t): Update translation for v2.13.0 round 2
| | * l10n: vi.po(3195t): Update translation for v2.13.0 round 2Tran Ngoc Quan2017-05-051-431/+438
| | | | | | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
| * | l10n: Update Catalan translationJordi Mas2017-05-091-2126/+2491
| | | | | | | | | | | | Signed-off-by: Jordi Mas <jmas@softcatala.org>
| * | l10n: bg.po: Updated Bulgarian translation (3195t)Alexander Shopov2017-05-091-85/+61
| | | | | | | | | | | | Signed-off-by: Alexander Shopov <ash@kambanaria.org>
| * | Merge branch 'fr_l10n_v2.13_rnd2' of git://github.com/jnavila/gitJiang Xin2017-05-091-448/+478
| |\ \ | | | | | | | | | | | | | | | | * 'fr_l10n_v2.13_rnd2' of git://github.com/jnavila/git: l10n: fr.po v2.13 rnd 2
| | * | l10n: fr.po v2.13 rnd 2Jean-Noel Avila2017-05-061-448/+478
| | |/ | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| * | l10n: de.po: translate 4 new messagesRalf Thielow2017-05-051-440/+465
| | | | | | | | | | | | | | | | | | | | | | | | Translate 4 new messages came from git.pot update in 28e1aaa48 (l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)). Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Acked-by: Matthias Rüster <matthias.ruester@gmail.com>
| * | l10n: de.po: update German translationRalf Thielow2017-05-051-1989/+2381
| | | | | | | | | | | | | | | | | | | | | | | | Translate 96 new messages came from git.pot update in dfc182b (l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)). Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Acked-by: Matthias Rüster <matthias.ruester@gmail.com>
| * | l10n: de.po: lower case after semi-colonMichael J Gruber2017-05-051-1/+1
| |/ | | | | | | | | Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
| * l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)Jiang Xin2017-05-051-428/+417
| | | | | | | | | | | | Generate po/git.pot from v2.13.0-rc2 for git v2.13.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| * Merge branch 'master' of git://github.com/git-l10n/git-poJiang Xin2017-05-057-14167/+17929
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.13.0 l10n round 1 l10n: fr.po v2.13 round 1 l10n: pt_PT: update Portuguese translation l10n: bg.po: Updated Bulgarian translation (3201t) l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0 l10n: sv.po: Update Swedish translation (3199t0f0u) l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)
| | * l10n: zh_CN: for git v2.13.0 l10n round 1Jiang Xin2017-05-051-1947/+2303
| | | | | | | | | | | | | | | | | | | | | Translate 96 messages (3198t0f0u) for git v2.13.0-rc0. Reviewed-by: 依云 <lilydjwg@gmail.com> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
| | * Merge branch 'fr_l10n_v2.13_rnd1' of git://github.com/jnavila/gitJiang Xin2017-05-051-1943/+2285
| | |\ | | | | | | | | | | | | | | | | * 'fr_l10n_v2.13_rnd1' of git://github.com/jnavila/git: l10n: fr.po v2.13 round 1
| | | * l10n: fr.po v2.13 round 1Jean-Noel Avila2017-05-021-1943/+2285
| | | | | | | | | | | | | | | | Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
| | * | l10n: pt_PT: update Portuguese translationVasco Almeida2017-05-011-2057/+2471
| | | | | | | | | | | | | | | | Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
| | * | l10n: bg.po: Updated Bulgarian translation (3201t)Alexander Shopov2017-04-301-2423/+4086
| | | | | | | | | | | | | | | | Signed-off-by: Alexander Shopov <ash@kambanaria.org>
| | * | Merge branch 'master' of https://github.com/vnwildman/gitJiang Xin2017-04-291-1946/+2299
| | |\ \ | | | | | | | | | | | | | | | | | | | | * 'master' of https://github.com/vnwildman/git: l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0
| | | * | l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0Tran Ngoc Quan2017-04-251-1946/+2299
| | | |/ | | | | | | | | | | | | Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
| | * | l10n: sv.po: Update Swedish translation (3199t0f0u)Peter Krefting2017-04-231-1938/+2294
| | |/ | | | | | | | | | Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
| | * l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)Jiang Xin2017-04-231-1913/+2191
| | | | | | | | | | | | | | | | | | Generate po/git.pot from v2.13.0-rc0 for git v2.13.0 l10n round 1. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
* | | Sync with v2.12.3Junio C Hamano2017-05-0811-11/+116
|\ \ \ | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | Git 2.12.3v2.12.3Junio C Hamano2017-05-053-4/+12
| | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | Merge branch 'maint-2.11' into maintJunio C Hamano2017-05-0510-8/+105
| |\ \ \
| | * | | Git 2.11.2v2.11.2Junio C Hamano2017-05-054-3/+16
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | * | | Merge branch 'maint-2.10' into maint-2.11Junio C Hamano2017-05-059-8/+92
| | |\ \ \
| | | * | | Git 2.10.3v2.10.3Junio C Hamano2017-05-053-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | | * | | Merge branch 'maint-2.9' into maint-2.10Junio C Hamano2017-05-058-7/+83
| | | |\ \ \
| | | | * | | Git 2.9.4v2.9.4Junio C Hamano2017-05-053-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | | | * | | Merge branch 'maint-2.8' into maint-2.9Junio C Hamano2017-05-057-6/+74
| | | | |\ \ \
| | | | | * | | Git 2.8.5v2.8.5Junio C Hamano2017-05-054-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | | | | * | | Merge branch 'maint-2.7' into maint-2.8Junio C Hamano2017-05-056-5/+60
| | | | | |\ \ \
| | | | | | * | | Git 2.7.5v2.7.5Junio C Hamano2017-05-054-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | | | | | * | | Merge branch 'maint-2.6' into maint-2.7Junio C Hamano2017-05-055-4/+43
| | | | | | |\ \ \
| | | | | | | * | | Git 2.6.7v2.6.7maint-2.6Junio C Hamano2017-05-054-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | | | | | | * | | Merge branch 'maint-2.5' into maint-2.6Junio C Hamano2017-05-054-3/+29
| | | | | | | |\ \ \
| | | | | | | | * | | Git 2.5.6v2.5.6maint-2.5Junio C Hamano2017-05-054-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | | | | | | | * | | Merge branch 'maint-2.4' into maint-2.5Junio C Hamano2017-05-053-2/+15
| | | | | | | | |\ \ \