Commit Graph

2238 Commits

Author SHA1 Message Date
Christian Halstrick 27b791c591 Support config param "gc.pruneexpire"
Make GC honor the config parameter gc.pruneexpire. If the parameter is
not set then the default is "2.weeks.ago"

Change-Id: I0ae0ca85993cafb4bc75ba80504da18544894ec3
2012-09-17 22:41:06 +02:00
Tomasz Zarna f7b644df66 Add tests for output result of merging -- org.eclipse.jgit.pgm.Merge
Change-Id: I888c7e80503b869d65a9617e6a07e01d1ff5f197
2012-09-17 07:07:00 -07:00
Shawn Pearce 18e020218b Merge "Suppress two resource warnings" 2012-09-16 21:13:15 -04:00
Sasa Zivkov a551493240 Additional unit tests for the GC
Change-Id: Id5b578f7040c6c896ab9386a6b5ed62b0f495ed5
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-16 23:57:18 +02:00
Robin Rosenberg caa362f20d Check for write errors in standard out and exit with error
The underlying problem is that System.out is a PrintWriter and
as such it does not throw exceptions on error, but rather just
sets a flag and continues.

This changes replaces the use of System.out with a PrintWriter-like
writer that does not catch error, but instead throw them to the
caller.

Bug: 366243
Change-Id: I44405edc4416e943b87f09a0f6ed041c6c51b046
2012-09-16 11:12:47 -07:00
Shawn Pearce 1a07ddca85 Merge changes I8449695e,Idecd8018
* changes:
  Use assertEquals instead of == for literal primitives
  Use assertTrue/False instead of equals with boolean literals
2012-09-16 14:11:30 -04:00
Robin Rosenberg d92287bcc2 Use assertEquals instead of == for literal primitives
Change-Id: I8449695ecc94a423369a7644a6ec93cf0cacef5d
2012-09-16 00:23:51 +02:00
Robin Rosenberg a7b0641b96 Use assertTrue/False instead of equals with boolean literals
This include replacing assertTrue(!..) with assertFalse()

Change-Id: Idecd8018641454e10127d82ea3ddda3f671489ef
2012-09-16 00:23:23 +02:00
Robin Rosenberg 28adbb3500 Merge "Ignore non-commit refs when in RevWalkUtils.findBranchesReachableFrom" 2012-09-14 18:59:38 -04:00
Robin Stocker 187101808c [findBugs] Silence warning about Transport initialization
Change-Id: I98fc9720106bcd873b330090bafde276508f8a40
Signed-off-by: Robin Stocker <robin@nibor.org>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-14 00:01:47 +02:00
Tommi Siivola 0e56f34752 Fix ResolveMerger issue with submodule conflict
ResolveMerger throws a MissingObjectException when it encounters
a submodule conflict while merging. The reason is that it treats
the submodule link as a blob and tries to read its contents.

We solve the issue by detecting before content merge whether the
path to be merged is a submodule link, and skip the content
merge if it is.

Bug: 389238
Change-Id: I9a58dfc7716b28a21f5c04cf3a865091ae8dfe7e
Signed-off-by: Tommi Siivola <tommi.siivola@eficode.com>
2012-09-12 13:11:57 +03:00
Matthias Sohn e5cd1d4add Merge "Added new Status CLI command 'jgit status'" 2012-09-11 16:48:00 -04:00
Shawn O. Pearce fdf1f413b6 Remove protobuf from top-level pom.xml
This dependency is unused, and does not need to be
version-managed in the top-level pom.xml anymore.

Change-Id: I240d21b6478e15b05e679b8d976af171d81a524e
2012-09-11 07:06:35 -07:00
Matthias Sohn 7d789502a2 Merge "README: Convert to Markdown and rename to README.md" 2012-09-10 18:12:50 -04:00
Jason Pyeron 79d3dd8391 Ignore attempts to set the timeout to -1
The value of -1 is the default value used by the underlying http
transports provided by the jre. On some versions an attempt to
set the timeout explicitly to -1 triggers a check condition,
disallowing negative numbers.

Bug: 389003
Change-Id: I74a22f8edc6c8e15843ad07c96a137739d9dcad1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-10 23:50:10 +02:00
Robin Rosenberg 5f094154dd Added new Status CLI command 'jgit status'
This is a first basic implementation that displays current branch and
list of files of various status, but isn't as refined as its native
counterpart (e.g. does not say if we're ahead or behind the remote).
It's been helpful in the diagnostic of bug #347885.

Bug: 348318
CQ: 6769
Change-Id: Ifc35da608fbba652524c1b5b522e3c0d5369ad5e
Signed-off-by: François Rey <eclipse.org@francois.rey.name>
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
2012-09-09 21:10:59 +02:00
Robin Stocker 6b74aff641 README: Convert to Markdown and rename to README.md
This makes it display nicely on the GitHub mirror repository. And it is
still very pleasant to read in plain text.

Change-Id: I0c5e1caa58a22684cdbd9a02e9ec38e97d5adb1a
Signed-off-by: Robin Stocker <robin@nibor.org>
2012-09-08 19:58:37 +02:00
Robin Rosenberg 833fd09442 Ignore non-commit refs when in RevWalkUtils.findBranchesReachableFrom
This methods is for finding branches only.

Change-Id: Ic68b5295ff814401890f0592ae95851554706ca6
2012-09-08 12:08:07 +02:00
Shawn O. Pearce e63f1c94f8 Mark fields of BaseReceivePack private
None of these should have been exposed to base classes. The majority
of them are private implementation details that are not required by a
subclass in order to interact with the base protocol definition. The
few that are needed should be visible as accessor methods, so the
internals can be modified without breaking the public JGit API.

Change-Id: I874179105c9c37703307facbbf99387c52bf772c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-05 17:20:12 +02:00
Shawn O. Pearce 9638e0aa87 Delete checkObjectCollisions from PackParser
This flag was added to provide an unsafe operation on the local
repository because the storage.dht code was too damn slow to provide
proper safe Git behavior all of the time. Now that stoarge.dht has
been removed from the repository, also delete this unsafe flag to
prevent applications from misusing the JGit library and permitting
users to potentially damage their local repository with bad data
received from an untrusted peer.

Change-Id: Ib1861c48bb74836731e7b7d57b635dd654b0dc66
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-05 17:20:05 +02:00
Shawn O. Pearce 130ad4ea44 Delete storage.dht package
This experiment proved to be not very useful. I had originally
planned to use this on top of Google Bigtable, Apache HBase or
Apache Cassandra. Unfortunately the schema is very complex and
does not perform well. The storage.dfs package has much better
performance and has been in production at Google for many months
now, proving it is a viable storage backend for Git.

As there are no users of the storage.dht schema, either at Google or
any other company, nor any valid open source implementations of the
storage system, drop the entire package and API from the JGit project.
There is no point in trying to maintain code that is simply not used.

Change-Id: Ia8d32f27426d2bcc12e7dc9cc4524c59f4fe4df9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-05 17:19:51 +02:00
Tomasz Zarna e44c3e7139 Output result of switching branch -- o.e.jgit.pgm.Checkout
Change-Id: I9829950b686ce3b8c70b8f7a1774d5e2b55cd00a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-05 07:59:37 +02:00
Robin Rosenberg f590a4c667 Fix NPE when notes are present
Change-Id: If9200ae4a7f582a5562aecf323ff0430ba154583
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-05 07:42:12 +02:00
Robin Rosenberg cd23b214bf cleanup: use assertArrayEquals for assertion on arrays
Change-Id: I1df945011f8e5f03959b693d3564fe357e707f91
2012-09-03 22:37:58 +02:00
Robin Rosenberg 476e1d2ff1 cleanup: Prefer assertEquals over assertTrue(....equals(...))
That is the common style and yields better diagnostics on failure.

Change-Id: I831a55615a812734af0912a5d6bbfd1edc75308e
2012-09-03 22:37:57 +02:00
Christian Halstrick 32e952fefd Merge "Support branches with name 'config'" 2012-09-03 08:15:31 -04:00
Matthias Sohn 9d3110e72d Merge "Add tests for more coverage of CheckoutCommand" 2012-09-03 02:52:41 -04:00
Robin Stocker 11533f5d1d Add tests for more coverage of CheckoutCommand
Change-Id: Id3ab5f56f88d7e9636c71b30258c268a75fc422e
Signed-off-by: Robin Stocker <robin@nibor.org>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-03 08:44:28 +02:00
Robin Stocker 51c20b27ac DirCacheCheckout: Fix handling of files not in index
When a file is not in the index and neither contents nor mode differ
between "head" and "merge", the index state should be kept. If they
differ, a checkout conflict should occur. This is described in Git's
git-read-tree.txt.

JGit used to replace the index state with "merge" in both of the above
cases.

A confusing effect of this was that when one removed a file and then did
a rebase, the file silently reappeared again.

The changes to dir/file conflict handling are a consequence of this
change, as the index handling change made tests in DirCacheCheckoutTest
break. I compared these cases to C Git and the new behavior there also
matches what C Git does.

Bug: 387390
Change-Id: I5beb781f12172a68f98c67d4c8029eb51ceae62d
Signed-off-by: Robin Stocker <robin@nibor.org>
2012-09-01 13:29:00 +02:00
Robin Rosenberg 0a9e010e14 Create an input stream that transforms LF to CRLF
The transformation is the same as AutoCRLFOutputStream does, but
the direction is reversed. The tests are reused, but the implementation
derives somewhat from the EolCanonicalizingInputStream.

This stream will be used to compare blobs with LF line endings with
worktree data that has CRLF line endings.

Bug: 387501
Change-Id: I80d96e453e7f780dd464a89778de124cf35384e1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-09-01 09:56:51 +02:00
Christian Halstrick 6b9b024c91 Enhance statistics for repo by sizes and ref-counts
The statistics for a repo now expose how many bytes are used in the
filesystem to store all loose/packed objects. The number of packed/loose
refs are also exposed.

Change-Id: I335a4c7630a2629a86f13a2a5cd99f79a2c2afa4
2012-08-31 16:14:12 +02:00
Christian Halstrick abd60101b6 Implement a parser for dates
In order to parse user specified strings containing date and time info
a thread-safe parser is implemented. This is needed for example to
interpret configuration parameters (e.g. gc.pruneexpire where need to
parse strings like "2 weeks ago"). The parser is thread-safe by caching
SimpleDateFormat instances in a ThreadLocal cache.

Native git has a parser called approxidate which is able to interpret a
huge number of formats ("1 year ago", "tea time", ...). Ideally JGit
should be able to parse the same strings as native git but for now this
parser understands the following subset:

"now"
"yesterday"
"(x) years|months|weeks|days|hours|minutes|seconds ago"
"yyyy-MM-dd HH:mm:ss Z" (ISO)
"EEE, dd MMM yyyy HH:mm:ss Z" (RFC)
"yyyy-MM-dd"
"yyyy.MM.dd"
"MM/dd/yyyy"
"dd.MM.yyyy"
"EEE MMM dd HH:mm:ss yyyy Z" (DEFAULT)
"EEE MMM dd HH:mm:ss yyyy" (LOCAL)

Change-Id: Iccb66dadb60da13104e73140e53d5e2de068369c
2012-08-28 19:33:42 +10:00
Stefan Lay 47e4e9b177 Merge "Fix gc's usage of progress monitor" 2012-08-28 03:02:19 -04:00
Matthias Sohn 9893e9a880 Fix Jetty's p2 repository URL
The Jetty 7.x p2 repository was moved to the archive server

Change-Id: If864c64e8a64ced9b9b982332b412b367a6c1011
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-08-27 13:59:42 +02:00
Matthias Sohn e727aaf16e Update last jgit release version used in clirr API checks
Change-Id: I20b1dd7d45eb7bb2644865f019ab726354c840c7
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-08-27 11:15:32 +02:00
Matthias Sohn 867e3e520a Update maven plugin versions
Change-Id: I547e89b11eaa291f1e512a209ac49eaa15273b42
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-08-27 11:15:30 +02:00
Robin Rosenberg 0264c313ba Enable rebase to continue for all rebase stages
EGit should be able to continue a rebase started by C Git.

Change-Id: I63058026295fec34157b5687ae87ae9cb0c27c86
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-08-27 00:54:59 +02:00
Matthias Sohn 0e684bb97c Merge "Refactor detection of Windows platform to SystemReader" 2012-08-26 18:39:54 -04:00
Matthias Sohn 9004ed6e74 Merge "Set core.precomposeunicode to true when creating repository on Mac" 2012-08-26 18:34:22 -04:00
Matthias Sohn d0433a9bab Merge "Refactor detection of OS X to SystemReader" 2012-08-26 18:33:34 -04:00
Matthias Sohn 29d9fc478c Fix gc's usage of progress monitor
Change-Id: I8dcdf0b83e91e6132dc490e8ec53818220773c94
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2012-08-26 01:46:40 +02:00
Robin Rosenberg 9570e0d4a9 Refactor detection of Windows platform to SystemReader
Change-Id: Id0b8aef92f10572d4f1ec198e0281162fcd7ed4e
2012-08-22 00:37:17 +02:00
Robin Rosenberg dccad56c9a Set core.precomposeunicode to true when creating repository on Mac
Java has no option but to use precomposed Unicode, so we should
state that when creating a new repository. Not that Java will use
precomposed unicode regardless of this setting, but this reduces
the risk of incompatibility with C Git.

Change-Id: I3779b75f76d2e2061c836cbc9b4b7c2ae0cf18f4
2012-08-22 00:36:11 +02:00
Robin Rosenberg f5ef963acd Refactor detection of OS X to SystemReader
Change-Id: I34e9ba4a26f7af5b88140c070f02a7990f1941af
2012-08-22 00:36:09 +02:00
Robin Rosenberg 5e21a8916c Merge changes I98df46ce,Ifb815a12,I051a1724
* changes:
  Support [<ref>]@{upstream} revision syntax
  Support parsing previous checkout as a revision expresion.
  Allow a @ without branch in revision syntax
2012-08-21 17:34:45 -04:00
Robin Rosenberg 1c1fc6814c Merge "Refactored method to find branches from which a commit is reachable" 2012-08-21 17:19:17 -04:00
Matthias Sohn 812796023c Merge changes I4f73487b,I1d1ed122
* changes:
  The Git API's only likes /, not \ in paths
  Skip a test that cannot be verified on Windows
2012-08-21 16:59:42 -04:00
Robin Rosenberg c4bc9c709a The Git API's only likes /, not \ in paths
Therefore this test fails on Windows

Change-Id: I4f73487b720ea1479e95108344f1dc3711106408
2012-08-21 19:43:59 +02:00
Robin Rosenberg f72b26f2d3 Skip a test that cannot be verified on Windows
Change-Id: I1d1ed122c714f39ca7fb557224756205274804eb
2012-08-21 19:43:47 +02:00
Christian Halstrick 252727c4fc Support branches with name 'config'
JGit was not able to lookup refs which had the name of files which exist
in the .git folder. When JGit was looking up a ref named X it has a
fixed set of directories where it searched for files named X
(ignore packed refs for now). First directory to search for is .git. In
case of the ref named 'config' it searched there for this file, found it
(it's the .git/config file with the repo configuration in it), parsed
it, found it is an invalid ref and stopped searching. It never looked
for a file .git/refs/heads/config.

I changed JGit in a way that when it finds a file in GIT_DIR which
corresponds to a ref name and if this file doesn't contain a valid ref
then it will ignore the InvalidObjectIdException and continue searching.

Change-Id: Ic26a329fb1624a5b2b2494c78bac4bd76817c100
Bug: 381574
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
2012-08-21 15:10:02 +02:00