Commit Graph

5566 Commits

Author SHA1 Message Date
David Pursehouse 305b488975 StoredObjectRepresentationNotAvailableException: Add TODO to fix API in 5.0
Change-Id: I9a0e6acac1b88ddf257fe7b2b7d0142be20250ea
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-19 10:48:06 +09:00
David Pursehouse 5e7eed41f6 StoredObjectRepresentationNotAvailableException: Add constructor that takes cause
If the cause can be passed into the constructor, callers don't need to
instantiate it and then explicitly call initCause.

Note that the constructors in this class cause "non-API parameter type"
warnings because ObjectToPack is internal, however it's probably OK
since the only non-internal reference to it is in the pgm.debug package.

Change-Id: Ia4eab24e79f9afe6214ea8160137d941d4048319
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-19 10:40:57 +09:00
David Pursehouse 1e141469f1 Merge changes Ifc34e96a,I72be0a0d
* changes:
  Fix javadoc in org.eclipse.jgit rewalk package
  Fix javadoc in org.eclipse.jgit ketch package
2017-12-18 18:33:40 -05:00
Dave Borowitz 31a2d09c9c Config: Rewrite subsection and value escaping and parsing
Previously, Config was using the same method for both escaping and
parsing subsection names and config values. The goal was presumably code
savings, but unfortunately, these two pieces of the git config format
are simply different.

In git v2.15.1, Documentation/config.txt says the following about
subsection names:

  "Subsection names are case sensitive and can contain any characters
  except newline (doublequote `"` and backslash can be included by
  escaping them as `\"` and `\\`, respectively).  Section headers cannot
  span multiple lines.  Variables may belong directly to a section or to
  a given subsection."

And, later in the same documentation section, about values:

  "A line that defines a value can be continued to the next line by
  ending it with a `\`; the backquote and the end-of-line are stripped.
  Leading whitespaces after 'name =', the remainder of the line after
  the first comment character '#' or ';', and trailing whitespaces of
  the line are discarded unless they are enclosed in double quotes.
  Internal whitespaces within the value are retained verbatim.

  Inside double quotes, double quote `"` and backslash `\` characters
  must be escaped: use `\"` for `"` and `\\` for `\`.

  The following escape sequences (beside `\"` and `\\`) are recognized:
  `\n` for newline character (NL), `\t` for horizontal tabulation (HT,
  TAB) and `\b` for backspace (BS).  Other char escape sequences
  (including octal escape sequences) are invalid."

The main important differences are that subsection names have a limited
set of supported escape sequences, and do not support newlines at all,
either escaped or unescaped. Arguably, it would be easy to support
escaped newlines, but C git simply does not:

  $ git config -f foo.config $'foo.bar\nbaz.quux' value
  error: invalid key (newline): foo.bar
  baz.quux

I468106ac was an attempt to fix one bug in escapeValue, around leading
whitespace, without having to rewrite the whole escaping/parsing code.
Unfortunately, because escapeValue was used for escaping subsection
names as well, this made it possible to write invalid config files, any
time Config#toText is called with a subsection name with trailing
whitespace, like {foo }.

Rather than pile hacks on top of hacks, fix it for real by largely
rewriting the escaping and parsing code.

In addition to fixing escape sequences, fix (and write tests for) a few
more issues in the old implementation:

* Now that we can properly parse it, always emit newlines as "\n" from
  escapeValue, rather than the weird (but still supported) syntax with a
  non-quoted trailing literal "\n\" before the newline. In addition to
  producing more readable output and matching the behavior of C git,
  this makes the escaping code much simpler.
* Disallow '\0' entirely within both subsection names and values, since
  due to Unix command line argument conventions it is impossible to pass
  such values to "git config".
* Properly preserve intra-value whitespace when parsing, rather than
  collapsing it all to a single space.

Change-Id: I304f626b9d0ad1592c4e4e449a11b136c0f8b3e3
2017-12-18 17:46:37 -05:00
Matthias Sohn 5bd3e75094 Fix javadoc in org.eclipse.jgit rewalk package
Change-Id: Ifc34e96a56df30e3b73bef812eea943623af7906
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 17:11:46 +01:00
Matthias Sohn e3a04b6c41 Fix javadoc in org.eclipse.jgit ketch package
Change-Id: I72be0a0d5ac7d3e957597803bd103dbbec141ba4
2017-12-18 17:10:20 +01:00
Matthias Sohn 6dca3cc024 Fix javadoc in org.eclipse.jgit internal and fsck packages
Change-Id: Ib12da10aacda9389d594bf4f521e9a58d1935701
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:25:04 +01:00
Matthias Sohn 107c71a6e6 Fix javadoc in org.eclipse.jgit ignore package
Change-Id: I1a81d371420cd4cf90ab9e048026c0ab8a763018
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:10 +01:00
Matthias Sohn d1804d3f74 Fix javadoc in org.eclipse.jgit hooks package
Change-Id: I3b644048eb0fc19f94ba8f9799b5a2310481103f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:09 +01:00
Matthias Sohn 5e2e111280 Fix javadoc in org.eclipse.jgit gitrepo package
Change-Id: I2604c7bca87f005004d6d6c80fa9a39a7a1e3807
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:09 +01:00
Matthias Sohn 6c83cc1660 Fix javadoc in org.eclipse.jgit fnmatch package
Change-Id: I14384c3bf3c41f8e1c62ec117837c2fc782a832f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:08 +01:00
Matthias Sohn dc91f4ef2c Fix javadoc in org.eclipse.jgit events package
Change-Id: Ifcb9c67daeb9da84a1461a4f731523ac5df3a223
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:08 +01:00
Matthias Sohn 6478577899 Fix javadoc in org.eclipse.jgit errors package
Change-Id: I46aa5c3073b99a311a1a97fc57d8f29d32524482
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:07 +01:00
Matthias Sohn c281692c06 Fix javadoc in org.eclipse.jgit dircache package
Change-Id: Ib485eb217ac6be70519816f8cc0396931043a3d1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 13:19:07 +01:00
David Pursehouse 1463bb9b87 EmtpyCommitException: Add TODO to fix misspelled class name in 5.0
Change-Id: I5bb145d6d6cbaaa2d8cfb2febad7a008ca921236
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-18 05:51:14 -05:00
Christian Halstrick aa60a131f5 Merge "PushConnectionTest: Increase maxCommandBytes yet again" 2017-12-18 05:50:03 -05:00
David Pursehouse 89c8be2045 Merge changes I7162d729,I2761ea91
* changes:
  Fix javadoc org.eclipse.jgit diff package
  Fix javadoc in org.eclipse.jgit annotations and api packages
2017-12-18 05:49:51 -05:00
Christian Halstrick 019735b2f8 Merge "Repeat: Fix javadoc to say 'annotation' instead of 'interface'" 2017-12-18 05:48:45 -05:00
Christian Halstrick 6f730d0bb6 Merge "Remove redundant @SuppressWarnings("unused")" 2017-12-18 05:48:09 -05:00
Christian Halstrick 12532ef3ae Merge "PathTreeFilterHandler: Remove unused import" 2017-12-18 05:46:12 -05:00
Matthias Sohn 4d8233f237 Fix javadoc org.eclipse.jgit diff package
Change-Id: I7162d72916abc8533ad37e8b17335ff4a70d6519
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 10:47:19 +01:00
Matthias Sohn 0210e0e299 Fix javadoc in org.eclipse.jgit annotations and api packages
Change-Id: I2761ea91f8dfed16ea54e7a6646af03a30c15ec9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 10:45:50 +01:00
Matthias Sohn 4e27a16081 Fix javadoc in org.eclipse.jgit blame package
Change-Id: I116dacc7f4ace341ec6ffae2ab96b53496d89f64
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:23:33 -05:00
Matthias Sohn df2bcbfb23 Fix javadoc in org.eclipse.jgit attributes package
Change-Id: I12968f4be805266f285a518a014b8bd1d0c23bae
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:23:24 -05:00
David Pursehouse 663cb669b1 PushConnectionTest: Increase maxCommandBytes yet again
It was already increased in 61a943e and 661232b but is still not
enough to take into account snapshot versions that are 100 or more
commits ahead of tag, i.e. 4.9.2.201712150930-r.105-gc1d37ca27

Change-Id: Ibeff73adae06b92fe5bb9c5eced9e4c6a08c437c
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-18 10:22:33 +09:00
David Pursehouse 098893617d Repeat: Fix javadoc to say 'annotation' instead of 'interface'
Change-Id: Ib0c4ec28d6b7e2fc0fe71f7dc53dd12ccd6e8a2f
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-18 10:21:37 +09:00
David Pursehouse e895d21a52 Remove redundant @SuppressWarnings("unused")
These are now redundant since the parameters have javadoc.

Change-Id: I6bfde267e1712ee35871c30c8203c3b4dc5e136a
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-18 10:19:53 +09:00
David Pursehouse 40608e6e26 PathTreeFilterHandler: Remove unused import
Change-Id: I7a91210dcb775d0c9b46772f8ff3d84196ba3b10
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-18 10:17:37 +09:00
Matthias Sohn 6ac27ee215 Fix javadoc in org.eclipse.jgit.ui
Change-Id: Iec68c73fc0d8d26fdb26850354059ea521ac7fe5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 01:08:06 +01:00
Matthias Sohn f677ee4893 Fix javadoc in org.eclipse.jgit.pgm
Change-Id: I74616f6e8ef69bef4db2f13a9b47ddf57714fd1f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-18 01:08:02 +01:00
Matthias Sohn 5d64d3d83a Fix javadoc in org.eclipse.jgit.lfs.server
Change-Id: I0c52536ebeeb8e71d95c6420f6db7055ff082dfa
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:59:24 +01:00
Matthias Sohn e0332bfbc6 Fix javadoc in org.eclipse.jgit.lfs
Change-Id: I97b53c083da6aa31719d9e10369030ee33dd23dc
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:59:24 +01:00
Matthias Sohn a90b75b47a Fix javadoc in org.eclipse.jgit.junit
Change-Id: I1107e6a82849ac329361baabb5c481d86ea6dc9e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:21:54 +01:00
Matthias Sohn 0b131b7312 Fix javadoc in org.eclipse.jgit.junit.http
Change-Id: I8af6d07676a285f79635405e5891535a5adfd7e9
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:05:55 +01:00
Matthias Sohn 60b5111e4a Fix javadoc in org.eclipse.jgit.http.test
Change-Id: Ibd18dfed05d35bd70498d11c04c026a34114a87e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:05:55 +01:00
Matthias Sohn 3b00041caf Fix javadoc in org.eclipse.jgit.http.server
Change-Id: I732d773b21bbf64285493070964dd9e442eab5d8
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:05:55 +01:00
Matthias Sohn 53891d4eda Fix javadoc in org.eclipse.jgit.http.apache
Change-Id: I38a4854856b0103790a410b48c1c3d708b6500c1
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:05:55 +01:00
Matthias Sohn 32022e9764 Fix javadoc in org.eclipse.jgit.archive
Change-Id: Ibef80b15f17e884f3085e324283cefc738236a4d
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:05:55 +01:00
Matthias Sohn c7093f5cbe Fix javadoc in org.eclipse.jgit.ant
Change-Id: I97231080ebe040ad44f7189de6109b9626424d2f
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-17 20:05:44 +01:00
David Pursehouse c1d37ca275 Upgrade maven-javadoc-plugin to 3.0.0
This version seems to be much stricter and reports a lot more errors
in the javadoc formatting.

Disable failOnError to prevent the build from failing due to these
newly reported problems. These should be fixed in a follow-up commit.

Change-Id: Ia403cbedf72cfe8bdaf09f30e42e3bf96084ae52
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-16 14:30:05 +01:00
David Pursehouse 0e6728b0ad Upgrade maven-surefire{-report}-plugin to 2.20.1
Change-Id: If3979b36ac0e1fd66f31f8a92e76b0e47d066a3b
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-16 14:30:04 +01:00
David Pursehouse 73d1c9b4e1 Upgrade maven-dependency-plugin to 3.0.2
Change-Id: I1ed9f0e0ebdcadc4ddc56a78894b3a4220ae26ac
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-16 14:30:03 +01:00
David Pursehouse 00e2c5a60c Upgrade maven-shade-plugin to 3.1.0
Change-Id: I14d746dfbfcea0d87378894b74c0cd673253f566
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-16 14:30:03 +01:00
David Pursehouse ed38840eba Merge branch 'stable-4.9'
* stable-4.9:
  Prepare 4.9.3-SNAPSHOT builds
  JGit v4.9.2.201712150930-r
  Write packed-refs directly when cloning

Change-Id: I3b0fad9c45cdf3a918ddb8ea4a37b8d3403aae90
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-16 14:04:01 +01:00
Matthias Sohn 1e56842742 Prepare 4.9.3-SNAPSHOT builds
Change-Id: Ife3f2b0b5407227f89ded42358adbf01d53e14cf
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-16 03:49:03 +01:00
Zhen Chen 99e70530b9 DfsFsck: Skip unborn branches and symrefs to nowhere
The map returned by getAllRefs includes all refs, including symrefs like
HEAD that may not point to any object yet. That is a valid state (e.g.,
in a new repository that has just been created by "git init"), so skip
such refs.

Change-Id: Ieff8a1aa738b8d09a2990d075eb20601156b70d3
Signed-off-by: Zhen Chen <czhen@google.com>
2017-12-15 14:16:33 -08:00
Matthias Sohn 24b7e91264 JGit v4.9.2.201712150930-r
Change-Id: I013964045d532659a4be3b81d6612b59bc9ffb14
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
2017-12-15 15:29:36 +01:00
Thomas Wolf c86327979f 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>
2017-12-15 14:14:03 +01:00
David Pursehouse c60814d1d5 ConfigTest: Remove redundant assignment
Change-Id: Ia913dbe6b7ad4b7000525fda8ca08cbc8dd87da6
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-15 09:33:50 +09:00
David Pursehouse 778d62e596 Merge branch 'stable-4.9'
* stable-4.9:
  Config: Remove the include functionality

Merged with "-s ours" because the fix on stable conflicts with
the fix already done here.

Change-Id: I85e394422d5dc40ca33ed3a78ddbf5cd1da1664a
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
2017-12-15 09:21:57 +09:00