- 23 Apr, 2013 20 commits
-
-
This makes diff use the cvar cache for config options where possible, and also adds support for a number of other config options to diff including "diff.context", "diff.ignoreSubmodules", "diff.noprefix", "diff.mnemonicprefix", and "core.abbrev". To make this natural, this involved a rearrangement of the code that allocates the diff object vs. the code that initializes it based on the combination of options passed in by the user and read from the config. This commit includes tests for most of these new options as well.
Russell Belfer committed -
This is a conservative change, but it seemed like the only safe thing to do -- i.e. clear the cvar cache when a config gets set.
Russell Belfer committed -
This converts many of the config lookups that are done around the library to use the repository config cache. This was everything I could find that wasn't part of diff (which requires a larger fix).
Russell Belfer committed -
This adds a bunch of additional config values to the repository config value cache and makes it easier to add a simple boolean config without creating enum values for each possible setting. Also, this fixes a bug in git_config_refresh where the config cache was not being cleared which could lead to potential incorrect values. The work to start using the new cached configs will come in the next couple of commits...
Russell Belfer committed -
When case insensitive tree iterators were added, we started reading the case sensitivity of the index to decide if the tree should be case sensitive. This is good for index-to-tree comparisons, but for tree-to-tree comparisons, we should really default to doing a case sensitive comparison unless the user really wants otherwise.
Russell Belfer committed -
Linquize committed
-
Ben Straub committed
-
Remote refspecs minor fixes
Vicent Martí committed -
Nikolai Vladimirov committed
-
64 bit atomic operations and shared cache memory usage
Vicent Martí committed -
Vicent Marti committed
-
Added function to insert commit into pack
Vicent Martí committed -
Nikolai Vladimirov committed
-
Carlos Martín Nieto committed
-
Xavier L committed
-
Xavier L committed
-
Carlos Martín Nieto committed
-
Vicent Marti committed
-
- 22 Apr, 2013 20 commits
-
-
Make refcounting atomic
Russell Belfer committed -
Vicent Marti committed
-
Vicent Marti committed
-
Vicent Marti committed
-
Carlos Martín Nieto committed
-
New caching
Vicent Martí committed -
Vicent Marti committed
-
Vicent Marti committed
-
Vicent Marti committed
-
Rename git_packfile_check to git_packfile_alloc since it is now being used more in that capacity. Fix the various places that use it. Consolidate some repeated code in odb_pack.c related to the allocation of a new pack_backend.
Russell Belfer committed -
The indexer was creating a packfile object separately from the code in pack.c which was a problem since I put a call to git_mutex_init into just pack.c. This commit updates the pack function for creating a new pack object (i.e. git_packfile_check()) so that it can be used in both places and then makes indexer.c use the shared initialization routine. There are also a few minor formatting and warning message fixes.
Russell Belfer committed -
Russell Belfer committed
-
This removes the lock from the repository object and changes the internals to use the new atomic git__compare_and_swap to update the _odb, _config, _index, and _refdb variables in a threadsafe manner.
Russell Belfer committed -
This builds on the earlier thread safety work to make it so that setting the odb, index, refdb, or config for a repository is done in a threadsafe manner with minimized locking time. This is done by adding a lock to the repository object and using it to guard the assignment of the above listed pointers. The lock is only held to assign the pointer value. This also contains some minor fixes to the other work with pack files to reduce the time that locks are being held to and fix an apparently memory leak.
Russell Belfer committed -
Russell Belfer committed
-
This unifies the object parse functions into one signature that takes an odb_object.
Russell Belfer committed -
This adds create and free callback to the git_objects_table so that more of the creation and destruction of objects can be table driven instead of using switch statements. This also makes the semantics of certain object creation functions consistent so that we can make better use of function pointers. This also fixes a theoretical error case where an object allocation fails and we end up storing NULL into the cache.
Russell Belfer committed -
This adds some basic tests for the oidmap just to make sure that collisions, etc. are dealt with correctly. This also adds some tests for the new caching that check if items are inserted (or not inserted) properly into the cache, and that the cache can hold up in a multithreaded environment without error.
Russell Belfer committed -
When I was writing threading tests for the new cache, the main error I kept running into was a pack file having it's content unmapped underneath the running thread. This adds a lock around the routines that map and unmap the pack data so that threads can effectively reload the data when they need it. This also required reworking the error handling paths in a couple places in the code which I tried to make consistent.
Russell Belfer committed -
Add a git_cache_set_max_object_size method that does more checking around setting the max object size. Also add a git_cache_size to read the number of objects currently in the cache. This makes it easier to write tests.
Russell Belfer committed
-