summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Add tests for FileUtils.delete and EMPTY_DIREECTORIES_ONLY"Shawn Pearce2013-04-191-85/+0
| | | | | | | | | | | | | | This reverts commit 7aa54967a26cb027fe390ad1c624ebb30f9ac6d5. The unit test dependend upon the specific order of names that listFiles() returned members in. The order is completely undefined and may differ even on different versions of Linux based systems. A proper unit test for this code would have considered both cases, where the deletion function was able to remove an empty subdirectory, or fail to remove a subdirectory because a file was still present within. This is not such a test. Change-Id: Ib0a706fea01e4b1ed8c8e859247d247a1279b4bc
* IndexDiff: Provide stage state for conflicting entriesRobin Stocker2013-04-191-0/+48
| | | | | | | | | | | | | Adds a new method getConflictingStageStates() which returns a Map<String, StageState> (path to stage state). StageState is an enum for all possible stage combinations (BOTH_DELETED, ADDED_BY_US, ...). This can be used to implement the conflict text for unmerged paths in output of "git status" or in EGit for decorations/hints. Bug: 403697 Change-Id: Ib461640a43111b7df4a0debe92ff69b82171329c Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* Merge "A deleted work tree file is not a conflict when merge wants to delete it"Robin Rosenberg2013-04-191-0/+15
|\
| * A deleted work tree file is not a conflict when merge wants to delete itRobin Rosenberg2013-04-081-0/+15
| | | | | | | | | | Bug: 405199 Change-Id: I4b2ef3dc432d2fad8a6fabd1c8aec407b5c8c5ac Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* | Merge "Untracked files should not be included in stash"Robin Rosenberg2013-04-191-0/+1
|\ \
| * | Untracked files should not be included in stashRobin Rosenberg2013-04-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The previous code stashed untracked files and left them in the work tree. Bug: 403282 Change-Id: I71727addb2b55fb8e409cae2b6af8138b1ff7ef1
* | | Remove some unnecessary dependencies on FileRepostoryRobin Rosenberg2013-04-189-35/+27
| | | | | | | | | | | | | | | Change-Id: Ib6ee3a2874a7e2240aa68f4ac32d00c4d1fab5ae Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | | Improve test coverage of AutoCRLF(In|Out)putStreamRobin Stocker2013-04-182-18/+33
|/ / | | | | | | | | | | Bug: 405672 Change-Id: I3894e98617fcee16dc2ac9853c203c62eb30c3ab Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* | Fix boundary conditions in AutoCRLFOutputStreamRobin Rosenberg2013-04-141-1/+25
| | | | | | | | | | | | | | | | | | | | This fixes some problems with inputs around the size of the internal buffer in AutoCRLFOutputStream (8000). Tests supplied by Robin Stocker. Bug: 405672 Change-Id: I6147897290392b3bfd4040e8006da39c302a3d49
* | Merge "Consider working tree changes when stashing newly added files"Robin Rosenberg2013-04-111-0/+32
|\ \
| * | Consider working tree changes when stashing newly added filesRobin Rosenberg2013-04-091-0/+32
| |/ | | | | | | | | Bug: 402396 Change-Id: I50ff707c0c9abcab3f98eea21aaa6e824f7af63a
* | Merge changes ↵Shawn Pearce2013-04-101-0/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ideecc472,I2b12788a,I6cb9382d,I12cd3326,I200baa0b,I05626f2e,I65e45422 * changes: Increase PackOutputStream copy buffer to 64 KiB Tighten object header writing in PackOutuptStream Skip main thread test in ThreadSafeProgressMonitor Declare members of PackOutputStream final Always allocate the PackOutputStream copyBuffer Disable CRC32 computation when no PackIndex will be created Steal work from delta threads to rebalance CPU load
| * | Skip main thread test in ThreadSafeProgressMonitorShawn Pearce2013-04-101-0/+2
| |/ | | | | | | | | | | | | | | | | | | | | update(int) is only invoked from a worker thread, in JGit's case this is DeltaTask. The Javadoc of TSPM suggests update should only ever be used by a worker thread. Skip the main thread check, saving some cycles on each run of the progress monitor. Change-Id: I6cb9382d71b4cb3f8e8981c7ac382da25304dfcb
* | Merge "LogCommand.all(): filter out refs that do not refer to commit objects"Robin Rosenberg2013-04-101-1/+7
|\ \
| * | LogCommand.all(): filter out refs that do not refer to commit objectsArthur Baars2013-03-311-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | 1. I have authored 100% of the content I'm contributing, 2. I have the rights to donate the content to Eclipse, 3. I contribute the content under the EDL Change-Id: I48b1828e0b1304f76276ec07ebac7ee9f521b194
* | | Merge "LogCommand.all(), peel references before using them"Robin Rosenberg2013-04-101-0/+25
|\| | | |/ |/|
| * LogCommand.all(), peel references before using themArthur Baars2013-03-311-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: LogCommand.all() throws an IncorrectObjectTypeException when there are tag references, and the repository does not contain the file "packed-refs". It seems that the references were not properly peeled before being added to the markStart() method. Solution: Call getRepository().peel() on every Ref that has isPeeled()==false in LogCommand.all() . Added test case for LogCommand.all() on repo with a tag. 1. I have authored 100% of the content I'm contributing, 2. I have the rights to donate the content to Eclipse, 3. I contribute the content under the EDL Bug: 402025 Change-Id: Idb8881eeb6ccce8530f2837b25296e8e83636eb7
* | Add the no-commit option to MergeCommandTomasz Zarna2013-04-041-0/+125
| | | | | | | | | | | | | | | | | | | | Added also tests and the associated option for the command line Merge command. Bug: 335091 Change-Id: Ie321c572284a6f64765a81674089fc408a10d059 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge "Fix PathFilterGroup not to throw StopWalkException too early"Christian Halstrick2013-04-041-1/+11
|\ \
| * | Fix PathFilterGroup not to throw StopWalkException too earlyRobin Rosenberg2013-04-031-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to the Git internal sort order a directory is sorted as if it ended with a '/', this means that the path filter didn't set the last possible matching entry to the correct value. In the reported issue we had the following filters. org.eclipse.jgit.console org.eclipse.jgit As an optimization we throw a StopWalkException when the walked tree passes the last possible filter, which was this: org.eclipse.jgit.console Due to the git sorting order, the tree was processed in this order: org.eclipse.jgit.console org.eclipse.jgit.test org.eclipse.jgit At org.eclipse.jgit.test we threw the StopWalkException preventing the walk from completing successfully. A correct last possible match should be: org.eclipse.jgit/ For simplicit we define it as: org/eclipse/jgit/ This filter would be the maximum if we also had e.g. org and org.eclipse in the filter, but that would require more work so we simply replace all characters lower than '/' by a slash. We believe the possible extra walking does not not warrant the extra analysis. Bug: 362430 Change-Id: I4869019ea57ca07d4dff6bfa8e81725f56596d9f
* | | Merge "Indicate initial commit on a branch in the reflog"Christian Halstrick2013-04-042-4/+6
|\| |
| * | Indicate initial commit on a branch in the reflogRobin Rosenberg2013-04-022-4/+6
| |/ | | | | | | | | Bug: 393463 Change-Id: I4733d6f719bc0dc694e7a6a6ad2092de6364898c
* / Speed up clone/fetch with large number of refsRobin Rosenberg2013-03-301-2/+113
|/ | | | | | | | Instead of re-reading all refs after each update, execute the deletes first, then read all refs once and perform the check for conflicting ref names in memory. Change-Id: I17d0b3ccc27f868c8497607d8e57bf7082e65ba3
* Fixed parsing of URI with a IPv6-addressAndreas König2013-03-271-1/+1
| | | | | | | | Allowed ipv6-address in a uri like: http://[::1]:8080/repo.git Change-Id: Ia00a20f694b2e9314892df77f9b11f551bb1d34e Signed-off-by: Chris Aniszczyk <zx@twitter.com>
* Extend FileUtils.rename to common git semanticsRobin Rosenberg2013-03-261-0/+69
| | | | | | | | | | | | | Unlike the OS or Java rename this method will (on *nix) try (on Windows) replace the target with the source provided the target does not exist, the target does exist and is a file, or if it is a directory which only contains directories. In the latter case the directory hierarchy will be deleted. If the initial rename fails and the target is an existing file the the target file will be deleted first and then the rename is retried. Change-Id: Iae75c49c85445ada7795246a02ce02f7c248d956 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
* Add tests for FileUtils.delete and EMPTY_DIREECTORIES_ONLYRobin Rosenberg2013-03-241-0/+85
| | | | Change-Id: I54a46c29df5eafc7739a6ef29e5dc80fa2f6d9ba
* Merge changes If98b0b97,I7c9c09b4Shawn Pearce2013-03-213-20/+24
|\ | | | | | | | | | | * changes: Add convenience factory method for most used builder pattern Don't use internal type FileRepository in public API
| * Don't use internal type FileRepository in public APIMatthias Sohn2013-03-203-20/+24
| | | | | | | | | | Change-Id: I7c9c09b4f190fa7cb830563bcdf2071407ee2ce0 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Allow users to show server messages while pushingAndré Dietisheim2013-03-211-0/+7
|/ | | | | | | | | | | | Allow users to provide their OutputStream (via Transport# push(monitor, refUpdates, out)) so that server messages can be written to it (in SideBandInputStream) while they're coming in. CQ: 7065 Bug: 398404 Change-Id: I670782784b38702d52bca98203909aca0496d1c0 Signed-off-by: Andre Dietisheim <andre.dietisheim@gmail.com> Signed-off-by: Chris Aniszczyk <zx@twitter.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix GC for FileRepo in case packfile renames failChristian Halstrick2013-03-191-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | Only on Windows the rename operation which renames temporary Packfiles (and index-files and bitmap-files) sometime fails. This happens only when renaming a temporary Packfile to a Packfile which already exists. Such situations occur if you run GC twice on a repo without modifying the repo inbetween. In such situations there was bug in GC which led to a corrupted repo whithout any packfiles anymore. This commit fixes the problem by introducing a utility method which renames a file and throws an IOException if it fails. This method also takes care to repeat a failing rename if our FS class has found out we are running on a platform with a unreliable File.renameTo() method. I am searching for a better solution because even with this utility method in hand a GC on a already GC'ed repo will fail on Windows. But at least with this fix we will not produce corrupted repos anymore. Bug: 389305 Change-Id: Iac1ab3e0b8c419c90404f2e2f3559672eb8f6d28 Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Make GC more robust against corrupt reflogsChristian Halstrick2013-03-191-5/+21
| | | | | | | | | | | With JGit it is possible to write reflog entries where new objectid and old objectid is null. Such reflogs cause FileRepository GC to crash because it doesn't expect the new objectid to be null. One case where this happened is in Gerrit's allProjects repo. In the same way as we expect the old objectid to be potentially null we should also ignore null values in the new objectid column. Change-Id: Icf666c7ef803179b84306ca8deb602369b8df16e
* JGit 3.0: move internal classes into an internal subpackageShawn Pearce2013-03-1842-79/+128
| | | | | | | | This breaks all existing callers once. Applications are not supposed to build against the internal storage API unless they can accept API churn and make necessary updates as versions change. Change-Id: I2ab1327c202ef2003565e1b0770a583970e432e9
* Support aborting non-interactive rebase started from C GitRobin Stocker2013-03-161-1/+23
| | | | | | | | | Continuing is trickier, as .git/rebase-apply contains no message file and no git-rebase-todo. Bug: 336820 Change-Id: I4eb87c850078ca187b38b81cc91c92afb1176945 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* NameRevCommand: Don't use merge cost for first parentDave Borowitz2013-03-151-17/+14
| | | | | | | | Treat first parent traversals as 1 and higher parents as MERGE_COST, to match git name-rev. Allow overriding the merge cost during tests to avoid creating 2^16 commits on the fly. Change-Id: I0175e0c3ab1abe6722e4241abe2f106d1fe92a69
* Merge "A folder does not constitute a dirty work tree"Robin Rosenberg2013-03-151-0/+77
|\
| * A folder does not constitute a dirty work treeRobin Rosenberg2013-03-101-0/+77
| | | | | | | | | | | | | | | | | | | | | | This fixes two cases: - A folder without tracked content exist both in the workdir and merged commit, as long as there names within that folder does not conflict. - An empty folder structure exists with the same name as a file in the merged commit. Bug: 402834 Change-Id: I4c5b9f11313dd1665fcbdae2d0755fdb64deb3ef
* | NameRevCommand: Use ~ notation for first parents of mergesDave Borowitz2013-03-141-1/+15
| | | | | | | | | | | | | | Prefer ~(N+1) to ^1~N. Although both are correct, the former is cleaner and matches "git name-rev". Change-Id: I772001a219e5eb346f5552c92e6d98c70b2cfa98
* | Allow adding single refs or all tags to NameRevCommandDave Borowitz2013-03-131-0/+20
| | | | | | | | Change-Id: I90e85bc835d11278631afd0e801425a292578bba
* | Merge "Add a NameRevCommand for describing IDs in terms of refnames"Shawn Pearce2013-03-111-0/+173
|\ \ | |/ |/|
| * Add a NameRevCommand for describing IDs in terms of refnamesDave Borowitz2013-03-111-0/+173
| | | | | | | | | | | | | | | | | | | | | | | | The walk logic does not use RevWalk because it needs to walk all paths to each of the requested commits, keeping track of each path along which the commit was found in the RevCommit subclass. From these paths, a single "best" path is chosen based on the total path length, with a penalty applied for paths that traverse merges. This functionality parallels "git name-rev". Change-Id: I92bfb47dd16c898313d2ee525395609c3bf72ebe
* | Do not cherry-pick merge commits during rebaseRobin Rosenberg2013-03-081-32/+51
| | | | | | | | | | | | | | | | | | | | | | Rebase computes the list of commits that are included in the merges, just like Git does, so do not try to include the merge commits. Re-recreating merges during rebase is a bit more complicated and might be a useful future extension, but for now just linearize during rebase. Change-Id: I61239d265f395e5ead580df2528e46393dc6bdbd Signed-off-by: Robin Stocker <robin@nibor.org>
* | Extend FileUtils.delete with option to delete empty directories onlyRobin Rosenberg2013-03-081-0/+46
|/ | | | | | | | | | The new option EMPTY_DIRECTORIES_ONLY will make delete() only delete empty directories. Any attempt to delete files will fail. Can be combined with RECURSIVE to wipe out entire tree structures and IGNORE_ERRORS to silently ignore any files or non-empty directories. Change-Id: Icaa9a30e5302ee5c0ba23daad11c7b93e26b7445 Signed-off-by: Robin Stocker <robin@nibor.org>
* Added read/write support for pack bitmap index.Colby Ranger2013-03-052-0/+200
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A pack bitmap index is an additional index of compressed bitmaps of the object graph. Furthermore, a logical API of the index functionality is included, as it is expected to be used by the PackWriter. Compressed bitmaps are created using the javaewah library, which is a word-aligned compressed variant of the Java bitset class based on run-length encoding. The library only works with positive integer values. Thus, the maximum number of ObjectIds in a pack file that this index can currently support is limited to Integer.MAX_VALUE. Every ObjectId is given an integer mapping. The integer is the position of the ObjectId in the complete ObjectId list, sorted by offset, for the pack file. That integer is what the bitmaps use to reference the ObjectId. Currently, the new index format can only be used with pack files that contain a complete closure of the object graph e.g. the result of a garbage collection. The index file includes four bitmaps for the Git object types i.e. commits, trees, blobs, and tags. In addition, a collection of bitmaps keyed by an ObjectId is also included. The bitmap for each entry in the collection represents the full closure of ObjectIds reachable from the keyed ObjectId (including the keyed ObjectId itself). The bitmaps are further compressed by XORing the current bitmaps against prior bitmaps in the index, and selecting the smallest representation. The XOR'd bitmap and offset from the current entry to the position of the bitmap to XOR against is the actual representation of the entry in the index file. Each entry contains one byte, which is currently used to note whether the bitmap should be blindly reused. Change-Id: Id328724bf6b4c8366a088233098c18643edcf40f
* Fix corrupted CloneCommand bare-repo fetch-refspec (#402031)Roberto Tyley2013-03-041-1/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CloneCommand has been creating fetch refspecs like this on bare clones: [remote "origin"] url = ssh://example.com/my-repo.git fetch = +refs/heads/*:refs/heads//* As you can see, the destination ref pattern has a superfluous slash. It looks like this behaviour has always been the case for CloneCommand, at least since cc2197ed when code catering to bare-clone fetch refspecs was added. That was released with JGit v1.0 almost 2 years ago, so there will probably be some bare repos in the wild which will have been cloned with JGit and have these corrupted refspecs. The effect of the corrupted fetch refspec is quite interesting. Up to and including JGit 2.0, the corrupt refspec was tolerated and fetches would work as intended with no indication to the user that anything was amiss. With JGit 2.1, a change was introduced which made JGit less tolerant, and fetches now attempt to update the non-existing ref "refs/heads//master". No exception is raised, but the real ref - "refs/heads/master" - is not updated. This behaviour was noticed by a user of Agit (which does bare clones by default and recently updated from JGit v2.0 to v2.2), reported here: https://github.com/rtyley/agit/issues/92 If you run C-Git fetch on a bare-repo cloned by JGit, it flat-out rejects the refspec (checked against v1.7.10.4): fatal: Invalid refspec '+refs/heads/*:refs/heads//*' Incidentally, C-Git does not create an explicit fetch refspec at all when performing a bare clone - the full remote config generated by C-Git looks like this: [remote "origin"] url = ssh://example.com/my-repo.git Using JGit on such a repository works fine, so omitting the fetch refspec entirely is also an option. Change-Id: I14b0d359dc69b8908f68e02cea7a756ac34bf881
* Include supported extensions in PackFile constructor.Colby Ranger2013-02-281-1/+3
| | | | | | | | | Previously a PackFile class was assumed to only support a .pack and .idx file. Update the constructor to enumerate the supported extensions for the pack file. This will allow the bitmap code to only be executed if the bitmap extension file is known to exist. Change-Id: Ie59041dffec5f60d7ea2771026ffd945106bd4bf
* Implement recursive merge strategyGeorge C. Young2013-02-222-0/+644
| | | | | | | | | | | | Extend ResolveMerger with RecursiveMerger to merge two tips that have up to 200 bases. Bug: 380314 CQ: 6854 Change-Id: I6292bb7bda55c0242a448a94956f2d6a94fddbaa Also-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Chris Aniszczyk <zx@twitter.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Merge branch 'stable-2.3'Matthias Sohn2013-02-212-12/+54
|\ | | | | | | | | | | | | | | | | | | | | * stable-2.3: Prepare 2.3.2-SNAPSHOT builds JGit v2.3.1.201302201838-r Accept Change-Id even if footer contains not well-formed entries Fix false positives in hashing used by PathFilterGroup Change-Id: I5882aa3b482d6bcd40a45bed51e5ab03f018a5bc Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * Merge "Accept Change-Id even if footer contains not well-formed entries" ↵Matthias Sohn2013-02-201-12/+41
| |\ | | | | | | | | | into stable-2.3
| | * Accept Change-Id even if footer contains not well-formed entriesStefan Lay2013-02-201-12/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of only looking for a Change-Id in the last section if it consists only of well-formed "key: value" lines replace the last occurrence of a valid Change-Id line in the last section. Some tools require footer lines e.g. without a colon. Gerrit doesn't accept Change-Id lines in the footer if the Change-Id line doesn't start at the beginning of the line. Bug: 400818 Change-Id: Icce54872adc8c566994beea848448a2f7ca87085 Signed-off-by: Stefan Lay <stefan.lay@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Fix false positives in hashing used by PathFilterGroupRobin Stocker2013-02-201-0/+13
| |/ | | | | | | | | | | | | | | | | The ByteArraySet failed to check the length of the entry correctly leading to matches where no match should be. Bug: 401249 Change-Id: I925bc48d9cafcdf13e1a797bb09fc2555eb270c5 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>