aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Push implementation of option strings"Terry Parker2016-07-2210-6/+244
|\
| * Push implementation of option stringsDan Wang2016-07-2210-6/+244
| | | | | | | | | | | | | | | | | | | | | | | | | | Example usage: $ ./jgit push \ --push-option "Reviewer=j.doe@example.org" \ --push-option "<arbitrary string>" \ origin HEAD:refs/for/master Stefan Beller has also made an equivalent change to CGit: http://thread.gmane.org/gmane.comp.version-control.git/299872 Change-Id: I6797e50681054dce3bd179e80b731aef5e200d77 Signed-off-by: Dan Wang <dwwang@google.com>
* | DfsObjDatabase: Add lazy last modified method to PackListDave Borowitz2016-07-191-0/+14
| | | | | | | | Change-Id: Id045f162fa584ea14da29a9df58a42c53a78dc15
* | Merge changes I159e9154,I06c722b2Dave Borowitz2016-07-193-43/+188
|\ \ | |/ |/| | | | | | | * changes: DfsObjectDatabase: Expose PackList and move markDirty there Invalidate DfsObjDatabase pack list when refs are updated
| * DfsObjectDatabase: Expose PackList and move markDirty thereDave Borowitz2016-07-182-20/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | What's invalidated when an object database is "dirty" is not the whole database, but rather a specific list of packs. If there is a race between getting the pack list and setting the volatile dirty flag where the packs are rescanned, we don't need to mark the new pack list as dirty. This is a fine point that only really applies if the decision of whether or not to mark dirty actually requires introspecting the pack list (say, its timestamps). The general operation of "take whatever is the current pack list and mark it dirty" may still be inherently racy, but the cost is not so high. Change-Id: I159e9154bd8b2d348b4e383627a503e85462dcc6
| * Invalidate DfsObjDatabase pack list when refs are updatedDave Borowitz2016-07-143-40/+168
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, there is a race where a user of a DfsRepository in a single thread may get unexpected MissingObjectExceptions trying to look up an object that appears as the current value of a ref: 1. Thread A scans packs before scanning refs, for example by reading an object by SHA-1. 2. Thread B flushes an object and updates a ref to point to that object. 3. Thread A looks up the ref updated in (2). Since it is scanning refs for the first time, it sees the new object SHA-1. 4. Thread A tries to read the object it found in (3), using the cached pack list it got from (1). The object appears missing. Allow implementations to work around this by marking the object database's current pack list as "dirty." A dirty pack list means that DfsReader will rescan packs and try again if a requested object is missing. Implementations should mark objects as dirty any time the ref database reads or scans refs that might be newer than a previously cached pack list. Change-Id: I06c722b20c859ed1475628ec6a2f6d3d6d580700
* | BatchRefUpdate: Remove unused namesToCheck variableDan Wang2016-07-151-2/+0
|/ | | | | | | | | | | This variable has been populated and never used since it was introduced in commit 5cf53fdacf28d5cabe7ad1ed154fe7f4971225a9 (Speed up clone/fetch with large number of refs, 2013-02-18). Noted by FindBugs: "BatchRefUpdate.java:359, UC_USELESS_OBJECT, Priority: Normal" Change-Id: I7aacb49540aaee4a83db3d38b15633bb6c4773d0 Signed-off-by: Dan Wang <dwwang@google.com>
* Merge branch 'stable-4.4'Matthias Sohn2016-07-128-61/+375
|\ | | | | | | | | | | | | | | | | | | | | | | | | * stable-4.4: Log if Repository.useCnt becomes negative Time based eviction strategy for repository cache Add method to read time unit from config Align include.path max depth with native git Config load should not fail on unsupported or nonexistent include path Allow using JDK 7 bootclasspath when compiling JGit using Java 8 Extract work queue to allow reusing it Change-Id: I6aeedb1cb8b0c3068af344a719c80a03ae68fc23 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Log if Repository.useCnt becomes negativeMatthias Sohn2016-07-123-1/+19
| | | | | | | | | | | | | | We observe in Gerrit 2.12 that useCnt can become negative in rare cases. Log this to help finding the bug. Change-Id: Ie91c7f9d190a5d7cf4733d4bf84124d119ca20f7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Time based eviction strategy for repository cacheChristian Halstrick2016-07-123-9/+244
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When Repository.close() decrements the useCount to 0 currently the cache immediately evicts the repository from WindowCache and RepositoryCache. This leads to I/O overhead on busy repositories because pack files and references are inserted and deleted from the cache frequently. This commit defers the eviction of a repository from the caches until last use of the repository is older than time to live. The eviction is handled by a background task running periodically. Add two new configuration parameters: * core.repositoryCacheExpireAfter: cache entries are evicted if the cache entry wasn't accessed longer than this time in milliseconds * core.repositoryCacheCleanupDelay: defines the interval in milliseconds for running a background task evicting expired cache entries. If set to -1 the delay is set to min(repositoryCacheExpireAfter, 10 minutes). If set to 0 the time based eviction is switched off and no background task is started. If time based eviction is switched off the JVM can still evict cache entries if heap memory is running low. Change-Id: I4a0214ad8b4a193985dda6a0ade63b70bdb948d7 Also-by: Matthias Sohn <matthias.sohn@sap.com> Also-by: Hugo Arès <hugo.ares@ericsson.com> Also-by: Sasa Zivkov <sasa.zivkov@sap.com>
| * Add method to read time unit from configHugo Arès2016-07-124-0/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Time units supported: -milliseconds (1 ms, 2 milliseconds) -seconds (1 s, 1 sec, 1 second, 2 seconds) -minutes (1 m, 1 min, 1 minute, 2 minutes) -hours (1 h, 1 hr, 1 hour, 2 hours) -days (1 d, 1 day, 2 days) -weeks (1 w, 1 week, 2 weeks) -months (1 mon, 1 month, 2 months) -years (1 y, 1 year, 2 years) This functionality is implemented in Gerrit ConfigUtil class. Add it to JGit so it can eventually be remove from Gerrit. Change-Id: I2d6564ff656b6ab9424a9360624061c94fd5f413 Signed-off-by: Hugo Arès <hugo.ares@ericsson.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Align include.path max depth with native gitHugo Arès2016-06-271-1/+1
| | | | | | | | | | Change-Id: I52f059816e1d94b2d60d096e3013bf4095cd0fc4 Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
| * Config load should not fail on unsupported or nonexistent include pathHugo Arès2016-06-273-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1f86350 added initial support for include.path. Relative path and path with tilde are not yet supported but config load was failing if one of those 2 unsupported options was encountered. Another problem was that config load was failing if the include.path file did not exist. Change the behavior to be consistent with native git. Ignore unsupported or nonexistent include.path. Bug: 495505 Bug: 496732 Change-Id: I7285d0e7abb6389ba6983e9c46021bea4344af68 Signed-off-by: Hugo Arès <hugo.ares@ericsson.com>
| * Extract work queue to allow reusing itMatthias Sohn2016-06-082-46/+102
| | | | | | | | | | Change-Id: I28f7800030a3b9db48e315061509af0746feffcc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | DfsGarbageCollector: avoid closing idx and bitmap streams twiceJonathan Nieder2016-07-071-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These try-with-resources blocks close the underlying output stream twice: once when closing the CountingOutputStream wrapper, then again when closing the DfsOutputStream out. Simplify by only closing the CountingOutputStream. In practice this shouldn't matter because the close() method of a Closable is required to be idempotent, but avoiding the redundant extra close makes the code simpler to read and understand. Change-Id: I1778c4fc8ba075a2c6cd2129528bb272cb3a1af7
* | ReceivePack: report protocol parsing failures on channel 3Shawn Pearce2016-07-052-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the client sent a well-formed enough request to see it wants to use side-band-64k for status reporting (meaning its a modern client), but any other command record was somehow invalid (e.g. corrupt SHA-1) report the parsing exception using channel 3. This allows clients to see the failure and know the server will not be continuing. git-core and JGit clients send all commands and then start a sideband demux before sending the pack. By consuming all commands first we get the client into a state where it can see and respond to the channel 3 server failure. This behavior is useful on HTTPS connections when the client is buggy and sent a corrupt command, but still managed to request side-band-64k in the first line. Change-Id: If385b91ceb9f024ccae2d1645caf15bc6b206130
* | ReceivePack: catch InvalidObjectIdException while parsing shallowShawn Pearce2016-07-051-1/+11
| | | | | | | | | | | | | | | | The "shallow $id" parsing can also throw InvalidObjectIdException, just like parseCommand. Move it into its own method with a proper try-catch block to convert to the checked PackProtocolException. Change-Id: I6839b95f0bc4fbf4d2c213331ebb9bd24ab2af65
* | ReceivePack: remove unnecessary try-catch around parseCommandShawn Pearce2016-07-051-7/+1
| | | | | | | | | | | | This exception is already handled in the outer catch block. Change-Id: Ifc04b8e138732a97b9c0ee323af923b8e52a7f8e
* | ReceivePack: enable capabilities immediately on first lineShawn Pearce2016-07-052-5/+5
| | | | | | | | | | | | | | | | Instead of deferring until after command parsing, enable the capabilities after the first pkt-line has been read from the client. This allows the server to setup the side-band-64k channel immediately. Change-Id: I141b7fc92e983a41d3a58da8e1464a6917422b6c
* | ReceivePack: Use Java 7 multi-catch for unpackErrorShawn Pearce2016-07-051-5/+1
| | | | | | | | Change-Id: I328f5952f23185a7d8f81a144979b4f8a095bd60
* | push: Report fatal server errors during pack writingShawn Pearce2016-07-051-1/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the push client has requested side-band support the server can signal a fatal error parsing the pack using the error channel (3) and then hang up. This may cause the PackWriter to fail to write to data onto the network socket, which throws a misleading error back up to the application and the user. During a write failure poll the input to see if the side band system can parse out an error message off channel 3. This should be fast as there will either be an error present in the buffer, or the remote will also have hung-up on the side band channel. In the case of a hang-up just rethrow the original IOException as its a network error. This roughly matches what C git does; once commands are sent and the packer is started a new thread runs in the background to decode any possible server error during unpacking on the remote peer Change-Id: Idb37a4a122a565ec4b59130e08c27d963ba09395
* | ReceivePack: Catch InvalidObjectIdException instead of IAEShawn Pearce2016-07-051-1/+2
| | | | | | | | | | | | | | | | The more specific type InvalidObjectIdException is thrown by ObjectId.fromString(). Use it here in ReceivePack as the more generic IAE is never thrown by the body of the try-catch block. Change-Id: I53fc13c561c7d429a50b5eb82773f1a670431c54
* | UploadPack: Include peeled ObjectId as advertisedShawn Pearce2016-07-051-2/+8
| | | | | | | | | | | | | | | | | | | | A RefAdvertiser writing to the network includes both the reference's ObjectId and its peeled ObjectId in the advertised set. In smart HTTP negotiation requests may bypass the RefAdvertiser and quickly build the set based on current refs; include the peeled ObjectIds to match behavior with the normal bidirectional protocols on git:// and SSH. Change-Id: I5371bed60da36e8d12c4ad9a5c1d91a0f0ad486b
* | Merge "UploadPack: Remove duplicate sentReady assignment"Christian Halstrick2016-07-051-1/+0
|\ \
| * | UploadPack: Remove duplicate sentReady assignmentShawn Pearce2016-07-041-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | This field was being set twice within the block. Setting it just once is sufficient. writeString() does not examine the field so it is fine to set it after the call. Change-Id: Ib4c74df4f1304e9df3015885bf360bf0d7bc6ca2
* | | Merge "UploadPack: Correct typo of negotiation in Javadoc"Matthias Sohn2016-07-041-2/+2
|\| |
| * | UploadPack: Correct typo of negotiation in JavadocShawn Pearce2016-07-041-2/+2
| | | | | | | | | | | | Change-Id: Ibab89fddda7ccfe3390348aa129ab2e5e3b7f538
* | | Remove no longer needed API problem filtersMatthias Sohn2016-07-041-40/+0
|/ / | | | | | | Change-Id: I2332ce2f29e105b60b62a9a6fc7d4656a0c89343 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Fix typo in system config error messageMichael Keppler2016-07-011-1/+1
| | | | | | | | | | Change-Id: I14daca6c81b003123e5862b384718fe06fb3ebd0 Signed-off-by: Michael Keppler <michael.keppler@gmx.de>
* | Add configureJSch method to allow configuration of JSch objectsmarkdingram2016-07-011-0/+16
| | | | | | | | | | | | | | | | Example use case is to set a different IdentityRepository, for example, a RemoteIdentityRepository to allow SSH Agent supplied credentials. Change-Id: Id4a4afd64464e452ffe6d6ad49036f9e283b4655 Signed-off-by: markdingram <markdingram@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge changes from topic 'dfs-gc'Shawn Pearce2016-06-272-41/+133
|\ \ | | | | | | | | | | | | | | | | | | | | | * changes: Prune UNREACHABLE_GARBAGE packs when they expire Use try-with-resources in DfsGarbageCollector.writePack Fix lastModified to be consistent in DfsGarbageCollector Add GC_REST PackSource to better order DFS packs
| * | Prune UNREACHABLE_GARBAGE packs when they expireMike Williams2016-06-271-11/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DfsGarbageCollector will now enforce a maximum time to live (TTL) for UNREACHABLE_GARBAGE packs. The default TTL is 1 day, which should be enough time to avoid races with other processes that are inserting data into the repository. Change-Id: Id719e6e2a03cfc9a0c0aef8ed71d261dda14bd0c Signed-off-by: Mike Williams <miwilliams@google.com>
| * | Use try-with-resources in DfsGarbageCollector.writePackShawn Pearce2016-06-261-15/+5
| | | | | | | | | | | | Change-Id: I9a73125581b4d760b733fd045c3436c2aaaab730
| * | Fix lastModified to be consistent in DfsGarbageCollectorShawn Pearce2016-06-261-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Set all packs written by the DfsGarbageCollector to use the same starting timestamp as lastModified. This makes it easier to see which packs came from the same DfsGarbageCollector run, as they share the same timestamp. Change-Id: Id633573fbc3f0f360887b4745cacf33d6fc09320
| * | Add GC_REST PackSource to better order DFS packsShawn Pearce2016-06-262-15/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Force reads to use a search ordering of: INSERT / RECEIVE COMPACT GC (heads) GC_REST (non-heads) GC_TXN (refs/txn) UNREACHABLE_GARBAGE This has provided decent performance for object lookups. Starting from an arbitrary reference may find the content in a newer pack created by DfsObjectInserter or a ReceivePack server. Compaction of recent packs also contains newer content, and then most interesting data is in the "main" GC pack. As the GC pack is self-contained (has no edges leading outside) readers typically do not need to go further. Adding a new GC_REST PackSource allows the DfsGarbageCollector to identify to the pack ordering code which pack is which, so the non-heads are scanned second during reads. This removes a hack that was unique to Google's implementation that enforced this behavior by fixing up the lastModified timestamp. Renumber the PackSource's categories to reflect this search ordering. Change-Id: I19fdaab8a8d6687cbe8c88488e6daa0630bf189a
* | | Fix TreeWalk to reset attributes cache for each entryChristian Halstrick2016-06-231-1/+1
|/ / | | | | | | | | | | | | | | | | | | Treewalk has a member 'attr' which caches the attributes for the current entry. We did not reset the cache always when moving to next entry. The effect was that when there are no attributes for an entry 'a' but 'a' was skipped by a Treewalk filter then Treewalk stopped looking for attributes until TreeWalk.next() was called again. Change-Id: Ied39b7fb5f56afe7a237da17801003d0abe6b1c7
* | Fix DirCacheCheckout to return CheckoutConflictExceptionChristian Halstrick2016-06-231-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem occurs when the checkout wants to create a file 'd/f' but the workingtree contains a dirty file 'd'. In order to create d/f the file 'd' would have to be deleted and since the file is dirty that content would be lost. This should lead to a CheckoutConflictException for d/f when failOnConflict was set to true. This fix also changes jgit checkout semantics to be more like native gits checkout semantics. If during a checkout jgit wants to delete a folder but finds that the working tree contains a dirty file at this path then JGit will now throw an exception instead of silently keeping the dirty file. Like in this example: git init touch b git add b git commit -m addB mkdir a touch a/c git add a/c git commit -m addAC rm -fr a touch a git checkout HEAD~ Change-Id: I9089123179e09dd565285d50b0caa308d290cccd Signed-off-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de> Also-by: Rüdiger Herrmann <ruediger.herrmann@gmx.de>
* | Optimize RefAdvertiser for wire protocolShawn Pearce2016-06-182-5/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | The native wire protocol sends ref advertisements in the pkt-line format, which requires encoding the ObjectId and ref name onto a byte sequence. Busy servers show this is a very high source of garbage, which pushes the garbage collector harder when there are many refs in the repository (e.g. 70k, in a Gerrit managed repository). Optimize the side band advertiser by retaining the CharsetEncoder, minimizing the amount of temporary garbage built during encoding. Change-Id: I406c654bf82c1eb94b38862da2425e98396134cb
* | Merge branch 'stable-4.4'Matthias Sohn2016-06-142-14/+63
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-4.4: Prepare 4.4.1-SNAPSHOT builds JGit v4.4.0.201606070830-r Prepare 4.4.0-SNAPSHOT builds JGit v4.4.0.201606011500-rc2 Prepare 4.4.0-SNAPSHOT builds JGit v4.4.0.201605250940-rc1 Update Orbit repository for Neon to R20160520211859 Fix computation of id in WorkingTreeIterator with autocrlf and smudging Prepare 4.3.2-SNAPSHOT builds JGit v4.3.1.201605051710-r Prepare 4.4.0-SNAPSHOT builds JGit v4.4.0.201605041135-m1 Run Maven build in release.sh concurrently to speedup release Change-Id: I25ef0497a4455b8229b453e1023abb4631d4b6d3 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 4.4.1-SNAPSHOT buildsMatthias Sohn2016-06-073-43/+43
| | | | | | | | | | Change-Id: I4fe1c84b1418126f5b245b8a4f72bb7e37f48eae Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v4.4.0.201606070830-rv4.4.0.201606070830-rMatthias Sohn2016-06-073-4/+4
| | | | | | | | | | Change-Id: I5c771a62ac0420424a655a4025c62a4bc28dc44e Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Prepare 4.4.0-SNAPSHOT buildsMatthias Sohn2016-06-013-4/+4
| | | | | | | | | | Change-Id: Ib41dfe4103f013ba87a1ce62ee24bc9e10300eff Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * JGit v4.4.0.201606011500-rc2v4.4.0.201606011500-rc2Matthias Sohn2016-06-013-4/+4
| | | | | | | | | | Change-Id: Ifd7b7baba7d676a630e2f742d369c4186ea450a6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Merge branch 'master' into stable-4.4Matthias Sohn2016-06-0136-56/+295
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: Fix javadoc errors and unused imports introduced by ddd0fe25 RepoCommand: record manifest shallow recommendation in .gitmodules RepoCommand: record manifest groups as submodule labels Remove the deprecated TestRepository.getClock() method Replace use of deprecated method Repository.getRef() [findBugs] Prevent potential NPE in FileLfsRepository.getOutputStream() Better report on client side if push failed due to too large object [findBugs] Prevent potential NPE in CloneCommand.init() RepoCommand: remove --record-remote-branches RepoCommandTest: Improve assertion message for remote branch recording Change-Id: I4fbce4f84925a933fcc9a48058ed6793f5821b97 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Prepare 4.4.0-SNAPSHOT buildsMatthias Sohn2016-05-253-4/+4
| | | | | | | | | | | | | | | Change-Id: Iba6e423294d3315465648d19087a674a73b5ef28 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | JGit v4.4.0.201605250940-rc1v4.4.0.201605250940-rc1Matthias Sohn2016-05-253-4/+4
| | | | | | | | | | | | | | | Change-Id: Idd8e1664730b979cfbd9a2196081a48a1efa3330 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Merge branch 'master' into stable-4.4Matthias Sohn2016-05-2415-18/+193
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: JGit CLI: allow to call git init with specific directory Redirect all Show output to outs Support git config [include] section with absolute path(s) Added filter for merge and non-merges commits. [findBugs] Prevent potential NPE in FS_POSIX.readUmask() [findBugs] Fix calculation of host header in SignerV4 Update Orbit repository to S20160518051658 for Neon RC2 Fix StashApply regarding handling of untracked files GC should not pack objects only referenced by ORIG_HEAD,... Make sure to overwrite files when "reset --hard" detects conflicts Allow setting FileMode to executable when applying patches in ApplyCommand Fix config value get to return last instead of 1st just like git Remove UTF-8 checking duplication in Config lib subclasses Update Maven plugins Fix type parameter in javadoc in TestRepository.delete(String ref) TestRepository: Add delete() method Make BaseReceivePack.setAtomic public ReceivePack: Pass atomic setting from client to BatchRefUpdate Change-Id: I5c9c5b7ccb23fb48b44b3da10b2c5d876d043d24 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * \ \ Merge branch 'stable-4.3' into stable-4.4Matthias Sohn2016-05-248-31/+92
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-4.3: Fix computation of id in WorkingTreeIterator with autocrlf and smudging Prepare 4.3.2-SNAPSHOT builds JGit v4.3.1.201605051710-r Scan loose ref before packed in case gc about to remove the loose Fix possible NPEs when reporting transport errors Fix calling of clean/smudge filters from Checkout,MergeCommands Fix ApplyCommand when result of patch is an empty file Change-Id: I829f06699f6670e519d04c927bdba4b82df29199 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | * | | Fix computation of id in WorkingTreeIterator with autocrlf and smudgingChristian Halstrick2016-05-232-14/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JGit failed to do checkouts when the index contained smudged entries and autocrlf was on. In such cases the WorkingTreeIterator calculated the SHA1 sometimes on content which was not correctly filtered. The SHA1 was computed on content which two times went through a lf->crlf conversion. We used to tell the treewalk whether it is a checkin or checkout operation and always use the related filters when reading any content. If on windows and autocrlf is true and we do a checkout operation then we always used a lf->crlf conversion on any text content. That's not correct. Even during a checkout we sometimes need the crlf->lf conversion. E.g. when calculating the content-id for working-tree content we need to use crlf->lf filtering although the overall operation type is checkout. Often this bug does not have effects because we seldom compute the content-id of filesystem content during a checkout. But we do need to know whether a file is dirty or not before we overwrite it during a checkout. And if the index entries are smudged we don't trust the index and compute filesystem-content-sha1's explicitly. This caused EGit not to be able to switch branches anymore on Windows when autocrlf was true. EGit denied the checkout because it thought workingtree files are dirty because content-sha1 are computed on wrongly filtered content. Bug: 493360 Change-Id: I1072a57b4c529ba3aaa50b7b02d2b816bb64a9b8 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| | * | | Prepare 4.3.2-SNAPSHOT buildsMatthias Sohn2016-05-193-43/+43
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I71997a8be83841765111cb7b55506bd8edd8adad Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>