Improving Parallelism in git-grep
Matheus Tavares Bernardino
Supervisor: Prof. Dr. Alfredo Goldman
Capstone Project, Bachelor of Computer Science, IME-USP, 2019
Abstract Initial Proposal Code Poster Final Essay
Code
The code developed during this work was submitted to the Git Project in the format of patches. Some of them have already been incorporated and some of them are still in the process of being revised and improved (so new versions may be sent even after the project period is concluded). Since the patches were sent by email, you can find all of them in one of the mail archives of the Git mailing list, such as public-inbox. They are also available at patchwork, a patch tracking system for mail-based workflows.
At the time of this writing, this is the list of patches sent, in their most recent versions:
Patchset "clone: dir-iterator refactoring with tests" [v8 merged] (GSoC micro-project):- [1/10] clone: test for our behavior on odd objects/* content
- [2/10] clone: better handle symlinked files at .git/objects/
- [3/10] dir-iterator: add tests for dir-iterator API
- [4/10] dir-iterator: use warning_errno when possible
- [5/10] dir-iterator: refactor state machine model
- [6/10] dir-iterator: add flags parameter to dir_iterator_begin
- [7/10] clone: copy hidden paths at local clone
- [8/10] clone: extract function from copy_or_link_directory
- [9/10] clone: use dir-iterator to avoid explicit dir traversal
- [10/10] clone: replace strcmp by fspathcmp
- [01/12] grep: fix race conditions on userdiff calls
- [02/12] grep: fix race conditions at grep_submodule()
- [03/12] grep: fix racy calls in grep_objects()
- [04/12] replace-object: make replace operations thread-safe
- [05/12] object-store: allow threaded access to object reading
- [06/12] grep: replace grep_read_mutex by internal obj read lock
- [07/12] submodule-config: add skip_if_read option to repo_read_gitmodules()
- [08/12] grep: allow submodule functions to run in parallel
- [09/12] grep: protect packed_git [re-]initialization
- [10/12] grep: re-enable threads in non-worktree case
- [11/12] grep: move driver pre-load out of critical section
- [12/12] grep: use no. of cores as the default no. of thread
Some other RFC patches were sent in this period, but they are not directly related to the main goal of this project. You may find these works and additional patches that were not sent yet in my personal fork of the Git repository at GitHub.
Contact info at: https://matheustavares.gitlab.io/
Page build with the jekyll template good-clean-read (MIT License)