]> source.dussan.org Git - jgit.git/log
jgit.git
13 years agoTeach PackWriter how to reuse an existing object list 59/2359/1
Shawn O. Pearce [Wed, 26 Jan 2011 22:27:32 +0000 (14:27 -0800)]
Teach PackWriter how to reuse an existing object list

Counting the objects needed for packing is the most expensive part of
an UploadPack request that has no uninteresting objects (otherwise
known as an initial clone).  During this phase the PackWriter is
enumerating the entire set of objects in this repository, so they can
be sent to the client for their new clone.

Allow the ObjectReader (and therefore the underlying storage system)
to keep a cached list of all reachable objects from a small number of
points in the project's history.  If one of those points is reached
during enumeration of the commit graph, most objects are obtained from
the cached list instead of direct traversal.

PackWriter uses the list by discarding the current object lists and
restarting a traversal from all refs but marking the object list name
as uninteresting.  This allows PackWriter to enumerate all objects
that are more recent than the list creation, or that were on side
branches that the list does not include.

However, ObjectWalk tags all of the trees and commits within the list
commit as UNINTERESTING, which would normally cause PackWriter to
construct a thin pack that excludes these objects.  To avoid that,
addObject() was refactored to allow this list-based enumeration to
always include an object, even if it has been tagged UNINTERESTING by
the ObjectWalk.  This implies the list-based enumeration may only be
used for initial clones, where all objects are being sent.

The UNINTERESTING labeling occurs because StartGenerator always
enables the BoundaryGenerator if the walker is an ObjectWalk and a
commit was marked UNINTERESTING, even if RevSort.BOUNDARY was not
enabled.  This is the default reasonable behavior for an ObjectWalk,
but isn't desired here in PackWriter with the list-based enumeration.
Rather than trying to change all of this behavior, PackWriter works
around it.

Because the list name commit's immediate files and trees were all
enumerated before the list enumeration itself starts (and are also
within the list itself) PackWriter runs the risk of adding the same
objects to its ObjectIdSubclassMap twice.  Since this breaks the
internal map data structure (and also may cause the object to transmit
twice), PackWriter needs to use a new "added" RevFlag to track whether
or not an object has been put into the outgoing list yet.

Change-Id: Ie99ed4d969a6bb20cc2528ac6b8fb91043cee071
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoAllow ObjectReuseAsIs to resort objects during writing 58/2358/1
Shawn O. Pearce [Wed, 26 Jan 2011 01:20:08 +0000 (17:20 -0800)]
Allow ObjectReuseAsIs to resort objects during writing

It can be very handy for the implementation to resort the
object list based on data locality, improving prefetch in
the operating system's buffer cache.

Export the list to the implementation was a proper List,
and document that its mutable and OK to be modified.  The
only caller in PackWriter is already OK with these rules.

Change-Id: I3f51cf4388898917b2be36670587a5aee902ff10
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoPackWriter: Use TOPO order only for incremental packs 57/2357/1
Shawn O. Pearce [Tue, 25 Jan 2011 00:18:23 +0000 (16:18 -0800)]
PackWriter: Use TOPO order only for incremental packs

When performing an initial clone of a repository there are no
uninteresting commits, and the resulting pack will be completely
self-contained.  Therefore PackWriter does not need to honor C
Git standard TOPO ordering as described in JGit commit ba984ba2e0a
("Fix checkReferencedIsReachable to use correct base list").

Switching to COMMIT_TIME_DESC when there are no uninteresting commits
allows the "Counting objects" phase to emit progress earlier, as the
RevWalk will not buffer the commit list.  When TOPO is set the RevWalk
enumerates all commits first, before outputing any for PackWriter to
mark progress updates from.

Change-Id: If2b6a9903b536c7fb3c45f85d0a67ff6c6e66f22
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoRemove getObjectsDirectory, openPack from base API 16/2316/2
Shawn O. Pearce [Sun, 23 Jan 2011 01:27:20 +0000 (17:27 -0800)]
Remove getObjectsDirectory, openPack from base API

These two methods are specific to the FileRepository implementation
and should not be exposed as part of the base Repository API.  Now
that PackParser is generic and does not require these two methods
to import a pack stream into a repostiory, it is safe to remove
these and get them out of the public view.

Change-Id: I8990004d08074657f467849dabfdaa7e6674e69a
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoMerge "Support for self signed certificate (HTTPS)"
Shawn Pearce [Thu, 27 Jan 2011 16:46:49 +0000 (11:46 -0500)]
Merge "Support for self signed certificate (HTTPS)"

13 years agoHard reset should not report conflict on untracked file 53/2353/1
Matthias Sohn [Thu, 27 Jan 2011 16:20:04 +0000 (17:20 +0100)]
Hard reset should not report conflict on untracked file

This problem surfaced since EGit Core ResetOperationTest is failing
since change I26806d21. JGit detected checkout conflict for untracked
files which never were tracked by the repository.

"git reset --hard" in c git also doesn't remove such untracked files.

Change-Id: Icc8e1c548ecf6ed48bd2979c81eeb6f578d347bd
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoRename PlotWalk.getTags() to getRefs() 28/2328/2
Roberto Tyley [Tue, 25 Jan 2011 14:50:25 +0000 (14:50 +0000)]
Rename PlotWalk.getTags() to getRefs()

Change-Id: I170685e70d9ac09a010df69d26ec1c38bde60174
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoProvide access to the Refs of a PlotCommit 37/2337/2
Roberto Tyley [Wed, 26 Jan 2011 13:25:10 +0000 (13:25 +0000)]
Provide access to the Refs of a PlotCommit

This information is generally useful - have followed the
accessor pattern of 'children' and 'parents'

Change-Id: I79b3ddd6f390152aa49e6b7a4c72a4aca0d6bc72
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoFix tests broken by fix for adding files in a network share 51/2351/2
Robin Rosenberg [Wed, 26 Jan 2011 19:30:30 +0000 (20:30 +0100)]
Fix tests broken by fix for adding files in a network share

The change Ie0350e032a97e0d09626d6143c5c692873a5f6a2 was not
done properly. The renamed file was not write protected, and
this broke a test.

Bug: 335388
Change-Id: I41b2235b7677bc5fddc70dda2a56cdd2cb53ce5d
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoFetchCommand: allow to set "TagOpt" 50/2350/2
Mathias Kinzler [Wed, 26 Jan 2011 19:03:02 +0000 (20:03 +0100)]
FetchCommand: allow to set "TagOpt"

This is needed for implementing Fetch in EGit using the API.

Change-Id: Ibdcc95906ef0f93e3798ae20d4de353fb394f2e2
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoMake sure not to overwrite untracked not-ignored files 43/2343/2
Christian Halstrick [Wed, 12 Jan 2011 16:25:40 +0000 (17:25 +0100)]
Make sure not to overwrite untracked not-ignored files

When DirCacheCheckout was checking out it was silently
overwriting untracked files. This is only ok if the
files are also ignored. Untracked and not ignored files
should not be overwritten. This fix adds checks for
this situation.
Because this change in the behaviour also broke tests
which expected that a checkout will overwrite untracked
files (PullCommandTest) these tests have to be modified
also.

Bug: 333093
Change-Id: I26806d2108ceb64c51abaa877e11b584bf527fc9
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoFixed several NPEs in the Fetch CLI 45/2345/2
Sasa Zivkov [Wed, 26 Jan 2011 16:28:47 +0000 (17:28 +0100)]
Fixed several NPEs in the Fetch CLI

The Fetch command line was failing with NPE in case some options were omitted.
Additionally, it was setting a negative timeout when no timeout option was used
which caused HttpURLConnection to throw an IllegalArgumentException.

Change-Id: I2c67e2e1a03044284d183d73f0b82bb7ff79de95
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoFixed NLS in JGit command line interface 48/2348/2
Sasa Zivkov [Wed, 26 Jan 2011 17:20:13 +0000 (18:20 +0100)]
Fixed NLS in JGit command line interface

There was one place where the parameter substitution wasn't done which caused
text fragments like "{0}" to appear in JGits output.

Bug: 325025
Change-Id: I89b881a8b5ef39f609437546310463ed4f6e1fb5
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoFix adding files in a network share 33/2333/2
Robin Rosenberg [Tue, 25 Jan 2011 22:26:38 +0000 (23:26 +0100)]
Fix adding files in a network share

We cannot always rename read-only files on network shares,
so rename the temp file for a new loose object first, and
then set it as read-only.

Bug: 335388
Change-Id: Ie0350e032a97e0d09626d6143c5c692873a5f6a2
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoMerge "Refactor and comment complicated if statements"
Chris Aniszczyk [Wed, 26 Jan 2011 17:23:26 +0000 (12:23 -0500)]
Merge "Refactor and comment complicated if statements"

13 years agoMerge "MergeCommand should create missing branches"
Chris Aniszczyk [Wed, 26 Jan 2011 17:17:47 +0000 (12:17 -0500)]
Merge "MergeCommand should create missing branches"

13 years agoMerge "Make setCredentialsProvider more convenient to use"
Chris Aniszczyk [Wed, 26 Jan 2011 17:05:57 +0000 (12:05 -0500)]
Merge "Make setCredentialsProvider more convenient to use"

13 years agoMake setCredentialsProvider more convenient to use 46/2346/1
Mathias Kinzler [Wed, 26 Jan 2011 17:03:22 +0000 (18:03 +0100)]
Make setCredentialsProvider more convenient to use

Change-Id: I984836ea7d6a67fd2d1d05f270afa7c29f30971c
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoRemove unneeded interface from test class 40/2340/1
Christian Halstrick [Wed, 12 Jan 2011 12:52:50 +0000 (13:52 +0100)]
Remove unneeded interface from test class

Change-Id: Ia876fda0d4cf91b5326d48014e88503de93a1f38
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
13 years agoRefactor and comment complicated if statements 42/2342/1
Christian Halstrick [Wed, 12 Jan 2011 13:25:30 +0000 (14:25 +0100)]
Refactor and comment complicated if statements

When debugging and enhancing DirCacheCheckout.processEntry() I found
that some of if-statements where hard to read/understand. This
change just splits some long if statements and adds more comments
explaining in which state we are. This change is only a preparation
for followup commits which introduce checks for untracked+ignored
files.

Change-Id: I670ff08310b72c858709b9e395f0aebb4b290a56
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
13 years agoMergeCommand should create missing branches 41/2341/1
Christian Halstrick [Wed, 26 Jan 2011 15:30:13 +0000 (16:30 +0100)]
MergeCommand should create missing branches

If HEAD exists but points to an not-existing branch the merge
command should silently create the missing branch and check
it out. This happens if you pull into freshly initalized repo.
HEAD points to refs/heads/master but refs/heads/master doesn't
exist. If you know merge a commit X into HEAD then the branch
master should be created (pointing to X) the working tree should
be updated to reflect X. That is achieved by checkout with one
tree only (HEAD is missing).

A test for this functionality will come the the next proposal
in PullCommandTest.

Change-Id: Id4a0d56d944e0acebd4b3157428bb50bd3fdd872
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
13 years agoSupport for self signed certificate (HTTPS) 18/2318/2
Per Salomonsson [Wed, 26 Jan 2011 00:16:24 +0000 (01:16 +0100)]
Support for self signed certificate (HTTPS)

Add possibility to disable ssl verification, just as i can do with git
using: git config --global http.sslVerify false

To enable the feature, configure
Window->Preferences->Team->Git->Configuration
and add a new key/value: http.sslVerify=false

When handling repos over https, JGit will then check that flag to see
if security is loose and the ssl verification should be ignored.

Having it implemented as a key/value makes it not too obvious in the
GUI - so the user must know what he/she is doing when adding it. Being
aware of the risks etc.

Bug: 332487
Change-Id: I2a1b8098b5890bf512b8dbe07da41036c0fc9b72
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoPermit disabling birthday attack checks in PackParser 94/2294/2
Shawn O. Pearce [Wed, 19 Jan 2011 00:33:33 +0000 (16:33 -0800)]
Permit disabling birthday attack checks in PackParser

Reading a repository for millions of missing objects might be very
expensive to perform, especially if the repository is on a network
filesystem or some other costly RPC backend.  A repository owner
might choose to accept some risk in return for better performance,
so allow disabling collision checking when receiving a pack.

Currently there is no way for an end-user to disable this feature.
This is intentional, because it is generally *NOT* a good idea to
skip this check.  Instead this feature is supplied for storage
implementations to bypass the default checking logic, should they
have their own custom routines that is just as effective but can
be handled more efficiently.

Change-Id: I90c801bb40e86412209de0c43e294a28f6a767a5
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoEnsure all deltas were resolved in a pack 93/2293/2
Shawn O. Pearce [Wed, 19 Jan 2011 01:14:15 +0000 (17:14 -0800)]
Ensure all deltas were resolved in a pack

If a pack uses OFS_DELTA only (e.g. its an initial push to a
repository) and PackParser's implementation is broken such that the
delta chain that hangs below a particular object offset is empty, the
entryCount won't match the expected objectCount. Fail fast rather
than claiming the stream was parsed correctly.

The current implementation is not broken as described above.  I broke
the code when I implemented my own new subclass of PackParser (which
incorrectly mucked with the object offset information), leading me to
discover this consistency check was missing.

Change-Id: I07540f0ae1144ef6f3bda48774dbdefb8876e1d3
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoRefactor IndexPack to not require local filesystem 52/2252/3
Shawn O. Pearce [Fri, 14 Jan 2011 22:17:55 +0000 (14:17 -0800)]
Refactor IndexPack to not require local filesystem

By moving the logic that parses a pack stream from the network (or
a bundle) into a type that can be constructed by an ObjectInserter,
repository implementations have a chance to inject their own logic
for storing object data received into the destination repository.

The API isn't completely generic yet, there are still quite a few
assumptions that the PackParser subclass is storing the data onto
the local filesystem as a single file.  But its about the simplest
split of IndexPack I can come up with without completely ripping
the code apart.

Change-Id: I5b167c9cc6d7a7c56d0197c62c0fd0036a83ec6c
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoParse RevCommit bodies before calling RevFilter.include() 09/2309/4
Jesse Greenwald [Fri, 14 Jan 2011 22:34:35 +0000 (16:34 -0600)]
Parse RevCommit bodies before calling RevFilter.include()

RevFilter.include()'s documentation promises the RevCommit's
body is parsed before include is invoked.  This wasn't always
true if the commit was parsed once, had its body discarded,
the RevWalk was reset() and started a new traversal.

Change-Id: Ie5cafde09ae870712b165d8a97a2c9daf90b1dbd
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoAllow to set a CredentialsProvider on relevant API commands 27/2327/2
Mathias Kinzler [Tue, 25 Jan 2011 14:03:19 +0000 (15:03 +0100)]
Allow to set a CredentialsProvider on relevant API commands

This is needed for commands that use Transport internally.

Change-Id: I9417c85255b160723968c647063b9c7e05995ea4
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoExposed the constructor of Note class 04/2304/3
Sasa Zivkov [Fri, 21 Jan 2011 16:04:24 +0000 (17:04 +0100)]
Exposed the constructor of Note class

Additionally, defined the NoteMap.getNote method which returns a Note
instance.  These changes were necessary to enable implementation of
the NoteMerger interface (the merge method needs to instantiate a
Note) and to enable direct use of NoteMerger which expects instances
of Note class as its paramters.  Implementing creation of code review
summary notes in Gerrit [1] will make use of both of these features.

[1] https://review.source.android.com/#change,20045

Change-Id: I627aefcedcd3434deecd63fa1d3e90e303b385ac
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoMerge "Build http.server source JAR"
Chris Aniszczyk [Fri, 21 Jan 2011 15:32:22 +0000 (10:32 -0500)]
Merge "Build http.server source JAR"

13 years agoIntroduce metaData compare between working tree and index entries 99/2199/4
Christian Halstrick [Fri, 31 Dec 2010 13:42:41 +0000 (14:42 +0100)]
Introduce metaData compare between working tree and index entries

Instead of offering only a high-level isModified() method a new
method compareMetadata() is introduced which compares a working tree entry
and a index entry by looking at metadata only. Some use-cases
(e.g. computing the content-id in idBuffer()) may use this new method
instead of isModified().

Change-Id: I4de7501d159889fbac5ae6951f4fef8340461b47
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoAdd progress reporting to IndexDiff 63/2263/5
Robin Rosenberg [Fri, 21 Jan 2011 00:23:24 +0000 (01:23 +0100)]
Add progress reporting to IndexDiff

Change-Id: I4f05bdb0c58b039bd379341a6093f06a2cdfec6e
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoBuild http.server source JAR 92/2292/1
Shawn O. Pearce [Tue, 18 Jan 2011 23:59:15 +0000 (15:59 -0800)]
Build http.server source JAR

Change-Id: I459de081fd518abfa50dd812c68eed4d1c7f8a0b
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoFix misc spelling errors in comments and method names 62/2262/1
Robin Rosenberg [Mon, 17 Jan 2011 21:04:14 +0000 (22:04 +0100)]
Fix misc spelling errors in comments and method names

Change-Id: I24552443710075856540696717ac4068dfe6a7f2
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoMerge "File utility for creating a new empty file"
Matthias Sohn [Sun, 16 Jan 2011 17:22:46 +0000 (12:22 -0500)]
Merge "File utility for creating a new empty file"

13 years agoFile utility for creating a new empty file 05/2105/5
Matthias Sohn [Thu, 30 Dec 2010 22:10:55 +0000 (23:10 +0100)]
File utility for creating a new empty file

The java.io.File.createNewFile() method for creating new empty files
reports failure by returning false. To ease proper checking of return
values provide a utility method wrapping createNewFile() throwing
IOException on failure.

Change-Id: I42a3dc9d8ff70af62e84de396e6a740050afa896
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoMerge "ConfigConstants: expose some constants for user name and email."
Shawn Pearce [Wed, 12 Jan 2011 15:47:55 +0000 (10:47 -0500)]
Merge "ConfigConstants: expose some constants for user name and email."

13 years agoMerge "CheckoutCommand: fix reflog message"
Shawn Pearce [Wed, 12 Jan 2011 15:46:23 +0000 (10:46 -0500)]
Merge "CheckoutCommand: fix reflog message"

13 years agoMerge "Locate $HOME like C Git does on Windows"
Shawn Pearce [Wed, 12 Jan 2011 15:44:57 +0000 (10:44 -0500)]
Merge "Locate $HOME like C Git does on Windows"

13 years agoFix API ListBranchCommand for listmode 'all' 40/2240/1
Roberto Tyley [Wed, 12 Jan 2011 14:34:10 +0000 (14:34 +0000)]
Fix API ListBranchCommand for listmode 'all'

If remote branches are present they can not be added
to the RefMap from the local branches - the two RefMaps
have a different value of 'prefix' and consequently an
IllegalArgumentException is thrown.

13 years agoLocate $HOME like C Git does on Windows 37/2237/1
Robin Rosenberg [Wed, 12 Jan 2011 13:58:55 +0000 (14:58 +0100)]
Locate $HOME like C Git does on Windows

Java's user.home is not the same as $HOME so EGit did see the
same global configuration as C Git does.

Bug: 333269
Change-Id: Id54fc5292bf8c5a67177f9097ee692717a7df336
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoCheckoutCommand: fix reflog message 36/2236/1
Mathias Kinzler [Wed, 12 Jan 2011 12:19:32 +0000 (13:19 +0100)]
CheckoutCommand: fix reflog message

There is a space missing between <from> and "to" in the reflog
message produced by the CheckoutCommand, which is of the form

moving from <from> to <to>

Change-Id: I3dc57ab0a6589292db77a17d9029ee9499dfc725
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoConfigConstants: expose some constants for user name and email. 31/2231/2
Mathias Kinzler [Wed, 12 Jan 2011 07:50:12 +0000 (08:50 +0100)]
ConfigConstants: expose some constants for user name and email.

This is needed by a EGit change

http://egit.eclipse.org/r/#change,2232

Change-Id: I3d62f904b769fc2f1b7b8f0f24f7dd757fc9c379
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoMerge "Using java.util.concurrent in NLSTest instead of handling threads directly."
Shawn Pearce [Mon, 10 Jan 2011 15:05:28 +0000 (10:05 -0500)]
Merge "Using java.util.concurrent in NLSTest instead of handling threads directly."

13 years agoMerge "Do not cherry-pick or revert commit more than once"
Matthias Sohn [Mon, 10 Jan 2011 14:00:30 +0000 (09:00 -0500)]
Merge "Do not cherry-pick or revert commit more than once"

13 years agoUsing java.util.concurrent in NLSTest instead of handling threads directly. 19/2219/2
Sasa Zivkov [Fri, 7 Jan 2011 12:38:28 +0000 (13:38 +0100)]
Using java.util.concurrent in NLSTest instead of handling threads directly.

A test in NLSTest was mixing the "old" and the "new" way of handling
concurrency. This change makes use of the java.util.concurrent facilities to
control concurrency and removes the code that was directly dealing with Thread
objects.

Change-Id: Ie7267776e988a48a5443f0f3fe4eb43e79eee4b1
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
13 years agoDo not cherry-pick or revert commit more than once 23/2223/1
Robin Rosenberg [Mon, 10 Jan 2011 07:47:14 +0000 (08:47 +0100)]
Do not cherry-pick or revert commit more than once

Instead just return success. In the case that no commit has been
cherry-picked or reverted, just return the old HEAD.

Bug: 333814
Change-Id: I67db2b77b52c43932436d22a8daa5a6556423484
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoMerge "Use heap based stack for PackFile deltas"
Shawn O. Pearce [Mon, 10 Jan 2011 00:20:13 +0000 (19:20 -0500)]
Merge "Use heap based stack for PackFile deltas"

13 years agoMerge "Config: Preserve existing case of names in sections"
Shawn O. Pearce [Mon, 10 Jan 2011 00:19:08 +0000 (19:19 -0500)]
Merge "Config: Preserve existing case of names in sections"

13 years agoMerging Git notes 20/2120/10
Sasa Zivkov [Tue, 4 Jan 2011 14:27:26 +0000 (15:27 +0100)]
Merging Git notes

Merging Git notes branches has several differences from merging "normal"
branches. Although Git notes are initially stored as one flat tree the
tree may fanout when the number of notes becomes too large for efficient
access. In this case the first two hex digits of the note name will be
used as a subdirectory name and the rest 38 hex digits as the file name
under that directory. Similarly, when number of notes decreases a fanout
tree may collapse back into a flat tree. The Git notes merge algorithm
must take into account possibly different tree structures in different
note branches and must properly match them against each other.

Any conflict on a Git note is, by default, resolved by concatenating
the two conflicting versions of the note. A delete-edit conflict is, by
default, resolved by keeping the edit version.

The note merge logic is pluggable and the caller may provide custom
note merger that will perform different merging strategy.

Additionally, it is possible to have non-note entries inside a notes
tree. The merge algorithm must also take this fact into account and
will try to merge such non-note entries. However, in case of any merge
conflicts the merge operation will fail. Git notes merge algorithm is
currently not trying to do content merge of non-note entries.

Thanks to Shawn Pearce for patiently answering my questions related to
this topic, giving hints and providing code snippets.

Change-Id: I3b2335c76c766fd7ea25752e54087f9b19d69c88
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoFix IgnoreRule for directory-only patterns 16/2216/1
Marc Strapetz [Fri, 7 Jan 2011 11:52:42 +0000 (12:52 +0100)]
Fix IgnoreRule for directory-only patterns

Patterns containing only a trailing slash have to be treated
as "global" patterns. For example: "classes/" matches "classes"
as well as "dir/classes" directory.

13 years agoConfig: Preserve existing case of names in sections 14/2214/1
Shawn O. Pearce [Thu, 6 Jan 2011 18:45:25 +0000 (10:45 -0800)]
Config: Preserve existing case of names in sections

When an application asks for the names in a section, it may want to
see the existing case that was stored by the user.  For example,
Gerrit Code Review wants to store a configuration block like:

  [access "refs/heads/master"]
    label-Code-Review = group Developers

and although the name label-Code-Review is case-insensitive, it wants
to display the case as it appeared in the configuration file.

When enumerating section names or variable names (both of which are
case-insensitive), Config now keeps track of the string that first
appeared, and presents them in file order, permitting applications to
use this information.  To maintain case-insensitive behavior, the
contains() method of the returned Set<String> still performs a
case-insensitive compare.

This is a behavior change if the caller enumerates the returned
Set<String> and copies it to his own Set<String>, and then performs
contains() tests against that, as the strings are now the original
case from the configuration block.  But I don't think anyone actually
does this, as the returned sets are immutable and are cached.

Change-Id: Ie4e060ef7772958b2062679e462c34c506371740
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoUse heap based stack for PackFile deltas 05/2205/6
Shawn O. Pearce [Mon, 3 Jan 2011 00:42:44 +0000 (16:42 -0800)]
Use heap based stack for PackFile deltas

Instead of using the current thread's stack to recurse through the
delta chain, use a linked list that is stored in the heap.  This
permits the any thread to load a deep delta chain without running out
of thread stack space.

Despite needing to allocate a stack entry object for each delta
visited along the chain being loaded, the object allocation count is
kept the same as in the prior version by removing the transient
ObjectLoaders from the intermediate objects accessed in the chain.
Instead the byte[] for the raw data is passed, and null is used as a
magic value to signal isLarge() and enter the large object code path.

Like the old version, this implementation minimizes the amount of
memory that must be live at once.  The current delta instruction
sequence, the base it applies onto, and the result are the only live
data arrays.  As each level is processed, the prior base is discarded
and replaced with the new result.

Each Delta frame on the stack is slightly larger than the standard
ObjectLoader.SmallObject type that was used before, however the Delta
instances should be smaller than the old method stack frames, so total
memory usage should actually be lower with this new implementation.

Change-Id: I6faca2a440020309658ca23fbec4c95aa637051c
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoNoteMap implements Iterable<Note> 07/2207/3
Sasa Zivkov [Mon, 3 Jan 2011 15:03:49 +0000 (16:03 +0100)]
NoteMap implements Iterable<Note>

We will need to iterate over all notes of a NoteMap, at least this will be
needed for testing purposes. This change also implied making the Note class
public.

Change-Id: I9b0639f9843f457ee9de43504b2499a673cd0e77
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
13 years agoCleanup configuration of Maven JUnit runner 04/2204/1
Shawn O. Pearce [Sun, 2 Jan 2011 22:35:04 +0000 (14:35 -0800)]
Cleanup configuration of Maven JUnit runner

Set the plugin version in the top-level pom, not the unit test pom.
This ensures the same plugin is used for all JUnit tests within the
overall project.

Drop the include **/*Test.java definition, as its no longer necessary
with the JUnit 4 based test suite.  All of the test classes now end
with "Test" and include @Test annotations on the test methods.

Change-Id: Ib2c180bf531e1a97e31979fcc281fa0fc5a1abb3
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoFix NLSTest and RootLocalTest for JUnit 4 03/2203/1
Shawn O. Pearce [Sun, 2 Jan 2011 22:30:55 +0000 (14:30 -0800)]
Fix NLSTest and RootLocalTest for JUnit 4

These test classes needed new @Test annotations to be found by the
JUnit 4 test runner.

Change-Id: I61b6a8ebd468fa2d13fad5bf9cbd8f81a6f67e41
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoMerge "Implement a revert command"
Shawn Pearce [Sun, 2 Jan 2011 22:21:58 +0000 (17:21 -0500)]
Merge "Implement a revert command"

13 years agoImplement a revert command 01/2201/1
Robin Rosenberg [Sun, 2 Jan 2011 21:05:13 +0000 (22:05 +0100)]
Implement a revert command

This is almost reverted cherry-pick, and the implementation is
almost identical. It orders the input to merge differently to get
the effect and produces a different commit message with the
default author, rather than the original author.

Change-Id: I39970091d9f7406ae7168b8efaab23a5e2c16bad
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoRequire the hamcrest packaging that comes with Eclipse 00/2200/3
Robin Rosenberg [Sat, 1 Jan 2011 18:05:00 +0000 (19:05 +0100)]
Require the hamcrest packaging that comes with Eclipse

The other one gets installed with SWTBot, but you do not
need it if you do not hack EGit. Using import-package
instead of require-bundle fixes the dependency. Actually
we do not need hamcrest at this time, but JUnit wants it.

Change-Id: I59873618f86d02e8439d40c1f322ea8e5c4fe3fc
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoMerge "[findbugs] Make CheckoutResult constants final"
Shawn Pearce [Fri, 31 Dec 2010 22:08:23 +0000 (17:08 -0500)]
Merge "[findbugs] Make CheckoutResult constants final"

13 years agoDrop unneccessary @SuppressWarnings 98/2198/2
Robin Rosenberg [Fri, 31 Dec 2010 10:44:55 +0000 (11:44 +0100)]
Drop unneccessary @SuppressWarnings

Change-Id: I3a5b877efd3a58ad463c47bb663d073baea81dda
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoFix TestTranslationBundle 97/2197/2
Robin Rosenberg [Fri, 31 Dec 2010 10:44:54 +0000 (11:44 +0100)]
Fix TestTranslationBundle

The test was never run from maven, because its name did not end
in a way that was recognized by the pom. After rename it failed
because it did not find its resources.

Rename test class and move resources to the resources folder

Change-Id: I74a7ef1373cd902e1d05ff6ea38f8648b5fc5700
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoConvert all JGit unit tests to JUnit 4 96/2196/3
Robin Rosenberg [Fri, 31 Dec 2010 10:44:54 +0000 (11:44 +0100)]
Convert all JGit unit tests to JUnit 4

Eclipse has some problem re-running single JUnit tests if
the tests are in Junit 3 format, but the JUnit 4 launcher
is used. This was quite unnecessary and the move was not
completed. We still have no JUnit4 test.

This completes the extermination of JUnit3. Most of the
work was global searce/replace using regular expression,
followed by numerous invocarions of quick-fix and organize
imports and verification that we had the same number of
tests before and after.

- Annotations were introduced.
- All references to JUnit3 classes removed
- Half-good replacement for getting the test name. This was
  needed to make the TestRngs work. The initialization of
  TestRngs was also made lazily since we can not longer find
  out the test name in runtime in the @Before methods.
- Renamed test classes to end with Test, with the exception
  of TestTranslateBundle, which fails from Maven
- Moved JGitTestUtil to the junit support bundle

Change-Id: Iddcd3da6ca927a7be773a9c63ebf8bb2147e2d13
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoMerge "Add support for getting the system wide configuration"
Shawn Pearce [Fri, 31 Dec 2010 21:13:33 +0000 (16:13 -0500)]
Merge "Add support for getting the system wide configuration"

13 years agoAdd support for getting the system wide configuration 77/2177/4
Robin Rosenberg [Tue, 28 Dec 2010 16:15:18 +0000 (17:15 +0100)]
Add support for getting the system wide configuration

These settings are stored in <prefix>/etc/gitconfig. The C Git
binary is installed in <prefix>/bin, so we look for the C Git
executable to find this location, first by looking at the PATH
environment variable and then by attemting to launch bash as
a login shell to find out.

Bug: 333216
Change-Id: I1bbee9fb123a81714a34a9cc242b92beacfbb4a8
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoMerge "IndexPack: Use stack-based recursion for delta resolution"
Shawn Pearce [Fri, 31 Dec 2010 00:52:47 +0000 (19:52 -0500)]
Merge "IndexPack: Use stack-based recursion for delta resolution"

13 years agoIndexPack: Use stack-based recursion for delta resolution 72/2172/5
roberto [Thu, 30 Dec 2010 23:08:31 +0000 (23:08 +0000)]
IndexPack: Use stack-based recursion for delta resolution

Replace 'method' with 'heap'-based recursion for resolving deltas.

Git packfile delta-chain depth can exceed 50 levels in certain files
(the packfile of the JGit project itself has >800 objects with
chain-length >50). Using method-based recursion on such packfiles will
quickly throw a StackOverflowError on VMs with constrained stack.

Benefits:

* packfile delta-resolution no longer limited by the maximum number
  of stack frames permitted on the current thread.

* slight performance improvement
  (3% speed increase on the packfile of the JGit project)

Change-Id: I1d9b3a8ba3c6d874d83cb93ebf171c6ab193e6cc
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years ago[findbugs] Make CheckoutResult constants final 95/2195/1
Matthias Sohn [Thu, 30 Dec 2010 22:04:43 +0000 (23:04 +0100)]
[findbugs] Make CheckoutResult constants final

Change-Id: I9117f212e2ad7051fdc6e7417ebc7c2d15b357a8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoRefactor exec of a command and reading one line into utility 76/2176/3
Robin Rosenberg [Tue, 28 Dec 2010 16:15:12 +0000 (17:15 +0100)]
Refactor exec of a command and reading one line into utility

Change-Id: Ia9e5afe7f29c3e5e74b8d226441ed429fb229c82
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoRefactor search for a file within a PATH 75/2175/3
Robin Rosenberg [Tue, 28 Dec 2010 16:15:08 +0000 (17:15 +0100)]
Refactor search for a file within a PATH

Change-Id: I785ab6bf1823d174394b1d2b25c5bb202535e943

13 years agoMerge "Add launchers for the JGit HTTP package test"
Shawn Pearce [Thu, 30 Dec 2010 20:32:33 +0000 (15:32 -0500)]
Merge "Add launchers for the JGit HTTP package test"

13 years agoMerge "Enable JUnit4 in the jgit.http package too"
Shawn Pearce [Thu, 30 Dec 2010 20:31:40 +0000 (15:31 -0500)]
Merge "Enable JUnit4 in the jgit.http package too"

13 years agoMerge "Fix FileSnapShot"
Shawn Pearce [Thu, 30 Dec 2010 20:31:06 +0000 (15:31 -0500)]
Merge "Fix FileSnapShot"

13 years agoMerge "Enable use of JUnit 4 with maven"
Shawn Pearce [Thu, 30 Dec 2010 20:27:26 +0000 (15:27 -0500)]
Merge "Enable use of JUnit 4 with maven"

13 years agoAdd launchers for the JGit HTTP package test 85/2185/2
Robin Rosenberg [Thu, 30 Dec 2010 00:37:04 +0000 (01:37 +0100)]
Add launchers for the JGit HTTP package test

Change-Id: I8bb5cb5342ab86fbc586d879dc56f70f4c0e6ace
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoEnable JUnit4 in the jgit.http package too 84/2184/1
Robin Rosenberg [Thu, 30 Dec 2010 00:25:18 +0000 (01:25 +0100)]
Enable JUnit4 in the jgit.http package too

There are currently no JUnit4 tests here, but since we made JUnit4
the default for maven, it should be for Eclipse builds too.

Change-Id: Ic910df1705fa8d6ac26e97a41947cb8e5526d334
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoFix FileSnapShot 74/2174/2
Robin Rosenberg [Tue, 28 Dec 2010 18:01:46 +0000 (19:01 +0100)]
Fix FileSnapShot

We cannot use SystemReader to get the time, unless we do that consistently,
which is harder to do and be sure we are really testing what we want.

Then we need to update our lastRead variable whenever we conclude that
our file is not racily clean according to lastRead. It may well be clean,
but we do not know that until we check the system clock again.

Finally add a test for this class.

Change-Id: I1894b032b9bd359d1b5325e5472d48e372599e4c
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoEnable use of JUnit 4 with maven 83/2183/1
Robin Rosenberg [Thu, 30 Dec 2010 00:02:21 +0000 (01:02 +0100)]
Enable use of JUnit 4 with maven

Change-Id: If1948232ae73bc9cf1ce6ce1e953172e0a8bcee6
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoMerge "CheckoutResult: return paths instead of Files"
Shawn Pearce [Wed, 29 Dec 2010 19:29:49 +0000 (14:29 -0500)]
Merge "CheckoutResult: return paths instead of Files"

13 years agoEnable use of JUnit 4 with the jgit.test project 73/2173/1
Robin Rosenberg [Tue, 28 Dec 2010 16:14:32 +0000 (17:14 +0100)]
Enable use of JUnit 4 with the jgit.test project

Some enablement was done earlier, but we need to add the org.junit package
and hamcrest to make it work.

junit.textui removed, probably a mistake at some time in the past.

Change-Id: I6922a2f40eb0c077a8ade5ed073ecf0e90425544

13 years agoFix ArrayIndexOutOfBoundsException in DirCacheIterator 68/2168/1
Shawn O. Pearce [Wed, 22 Dec 2010 22:11:18 +0000 (14:11 -0800)]
Fix ArrayIndexOutOfBoundsException in DirCacheIterator

If the 'TREE' extension contains an invalid subtree that has
been removed, DirCacheIterator still tried to access it due to
an invalid childCnt field within the parent DirCacheTree object.
This is easy for a user to do, they just need to move all files
out of a subdirectory.

For example, the input for the JUnit test case for this bug was
built using the following C Git sequence:

  mkdir -p a/b
  touch a/b/c q
  git add a/b/c q
  git write-tree
  git mv a/b/c a/a

After the last step, the subdirectory a/b is empty, as its only
file was moved into the parent directory.  Because of the earlier
`git write-tree` operation, there is a 'TREE' extension present, but
the a and a/b subdirectories have been marked invalid by the rename.

When JGit tried to iterate over the a tree, it tried to correct
childCnt to be zero as a/b no longer exists, but it failed to
update childCnt.

Change-Id: I7a0f78fc48a36b1a83252d354618f6807fca0426
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoDirCacheIteratorTest: Use newInCore instead of disk 67/2167/1
Shawn O. Pearce [Wed, 22 Dec 2010 21:39:38 +0000 (13:39 -0800)]
DirCacheIteratorTest: Use newInCore instead of disk

Avoid the dependency on the local filesystem by using only an in-core
DirCache instance.  Each test case builds up the index from scratch
anyway through a DirCacheBuilder.

Change-Id: I5decf6bffc3ed35bf1d3e4ad5cc095891c80b772
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoCorrect GIT_INDEX_FILE environment variable 66/2166/1
Shawn O. Pearce [Wed, 22 Dec 2010 19:26:33 +0000 (11:26 -0800)]
Correct GIT_INDEX_FILE environment variable

This is GIT_INDEX_FILE, not GIT_INDEX.

Change-Id: Ib3af28ba196f74c8cb4d318b57ea346bb90f9a1e
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoCheckoutResult: return paths instead of Files 61/2161/1
Mathias Kinzler [Tue, 21 Dec 2010 09:06:19 +0000 (10:06 +0100)]
CheckoutResult: return paths instead of Files

As discussed in

http://egit.eclipse.org/r/#change,2127

we should use paths relative the working directory instead of Files to
notify the caller about conflicts and nondeleted files.

Change-Id: I034c7bd846f0df78d97bc246f38d411f29713dde
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoMerge "FileBasedConfig: Use FileSnapshot for isOutdated()"
Chris Aniszczyk [Mon, 20 Dec 2010 17:06:00 +0000 (12:06 -0500)]
Merge "FileBasedConfig: Use FileSnapshot for isOutdated()"

13 years agoFix CheckoutCommandTest 59/2159/1
Mathias Kinzler [Mon, 20 Dec 2010 15:54:41 +0000 (16:54 +0100)]
Fix CheckoutCommandTest

Change-Id: Ieacae01de20d7729ef34e6e6a1523fbaf9db41a8
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoFix JDK 6 Usage of String.getBytes(Charset) 58/2158/1
Mathias Kinzler [Mon, 20 Dec 2010 15:52:52 +0000 (16:52 +0100)]
Fix JDK 6 Usage of String.getBytes(Charset)

Change-Id: I619b00d8a3b0770c9fd1dc3314794f915ea80604
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoCheckout: fix handling if name does not refer to a local branch 39/2139/5
Mathias Kinzler [Mon, 20 Dec 2010 09:35:10 +0000 (10:35 +0100)]
Checkout: fix handling if name does not refer to a local branch

The CheckoutCommand does not handle names other than local branch
names properly; it must detach HEAD if such a name is encountered (for
example a commit ID or a remote tracking branch).

Change-Id: I5d55177f4029bcc34fc2649fd564b125a2929cc4
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoclone: Use DirCacheCheckout 34/2134/2
Shawn O. Pearce [Thu, 16 Dec 2010 00:14:19 +0000 (16:14 -0800)]
clone: Use DirCacheCheckout

This simple change lets us get rid of WorkDirCheckout from JGit,
and all of its supporting code.

Change-Id: I1a5aabe9ab4a2b156fd37cc7e9ededb4ed70f53a
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
13 years agoMerge "Extract pack directory last modified check code"
Chris Aniszczyk [Mon, 20 Dec 2010 15:27:33 +0000 (10:27 -0500)]
Merge "Extract pack directory last modified check code"

13 years agoRemove deprecated WriteTree from tests 33/2133/2
Shawn O. Pearce [Thu, 16 Dec 2010 00:39:28 +0000 (16:39 -0800)]
Remove deprecated WriteTree from tests

These tests doesn't need to use WriteTree anymore.  There are
other means of creating tree objects in the repository that aren't
deprecated, so use those instead.

Change-Id: I89cd8ab54c66964a5fddc0a045f1c0f1c7c49055
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoCheckout: expose a CheckoutResult 27/2127/3
Mathias Kinzler [Mon, 20 Dec 2010 09:21:49 +0000 (10:21 +0100)]
Checkout: expose a CheckoutResult

This is needed by callers to determine checkout conflicts and
possible files that were not deleted during the checkout so that they
can present the end user with a better Exception description and retry
to delete the undeleted files later, respectively.

Change-Id: I037930da7b1a4dfb24cfa3205afb51dc29e4a5b8
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
13 years agoFix wrong javadoc comment in Repository 53/2153/1
Robin Rosenberg [Sun, 19 Dec 2010 10:02:13 +0000 (11:02 +0100)]
Fix wrong javadoc comment in Repository

Change-Id: I9fc084b48418884ce1ccf16d56e800f1d3594885
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
13 years agoMerge "Move TransferConfig to transport package"
Robin Rosenberg [Sat, 18 Dec 2010 15:43:26 +0000 (10:43 -0500)]
Merge "Move TransferConfig to transport package"

13 years agoQualify post 0.10 builds 49/2149/1
Matthias Sohn [Fri, 17 Dec 2010 14:49:30 +0000 (15:49 +0100)]
Qualify post 0.10 builds

Change-Id: Ifcb8fdea95286779c8aea6bf4d7647e8c1c98d63
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoMerge branch 'stable-0.10' 48/2148/1
Matthias Sohn [Fri, 17 Dec 2010 14:41:27 +0000 (15:41 +0100)]
Merge branch 'stable-0.10'

13 years agoQualify post 0.10.1 builds 45/2145/1 stable-0.10
Matthias Sohn [Fri, 17 Dec 2010 14:23:14 +0000 (15:23 +0100)]
Qualify post 0.10.1 builds

Change-Id: I320f1f739f3689daf11d532a55ae1133785aec8e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoJGit 0.10.1 42/2142/2 v0.10.1
Matthias Sohn [Fri, 17 Dec 2010 00:38:13 +0000 (01:38 +0100)]
JGit 0.10.1

Change-Id: I4a46d35d354193e5d4f28ef7dfae75944be8ffcf
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
13 years agoDirCacheCheckout: fix getToBeDeleted() 37/2137/1
Mathias Kinzler [Thu, 16 Dec 2010 07:41:36 +0000 (08:41 +0100)]
DirCacheCheckout: fix getToBeDeleted()

This wrongly returns the same as getConflicts()
Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
Change-Id: Id37c625458fc5a9b3987f05b684620e24fdfe852

13 years agoMove TransferConfig to transport package 32/2132/1
Shawn O. Pearce [Thu, 16 Dec 2010 01:02:50 +0000 (17:02 -0800)]
Move TransferConfig to transport package

This doesn't belong in the main lib package.

Change-Id: Idb20bf5849138b34a7277250fe0795c2a1f22447
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoMerge "Do not rely on filemode differences in case of symbolic links"
Shawn Pearce [Wed, 15 Dec 2010 23:55:59 +0000 (18:55 -0500)]
Merge "Do not rely on filemode differences in case of symbolic links"