diff options
author | Thomas Wolf <thomas.wolf@paranor.ch> | 2017-12-14 13:24:00 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2017-12-15 14:14:03 +0100 |
commit | c86327979f1362cf742e1401a95fdec259636d37 (patch) | |
tree | 0c3641b2502786a7db77f7e834759e00cfde7e16 /org.eclipse.jgit.ant | |
parent | ec7f88eec8f52a2254b82bcb73aa489028ea3b39 (diff) | |
download | jgit-c86327979f1362cf742e1401a95fdec259636d37.tar.gz jgit-c86327979f1362cf742e1401a95fdec259636d37.zip |
Write packed-refs directly when cloning
When we are cloning we have no refs at all yet, and there cannot
(or at least should not) be any other thread doing something with
refs yet.
Locking loose refs is thus not needed, since there are no loose
refs yet and nothing should be trying to create them concurrently.
Let's skip the whole loose ref locking when we are cloning a repository.
As a result, JGit will write the refs directly to the packed-refs
file, and will not create the refs/remotes/ directories nor the
lock files underneath when cloning and packed refs are used. Since
no lock files are created, any problems on case-insensitive file
systems with tag or branch names that differ only in case are avoided
during cloning.
Detect if we are cloning based on the following heuristics:
* HEAD is a dangling symref
* There is no loose ref
* There is no packed-refs file
Note, however, that there may still be problems with such tag or
branch names later on. This is primarily a five-minutes-past-twelve
stop-gap measure to resolve the referenced bug, which affects the
Oxygen.2 release.
Bug: 528497
Change-Id: I57860c29c210568165276a123b855e462b6a107a
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.ant')
0 files changed, 0 insertions, 0 deletions