summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
Commit message (Collapse)AuthorAgeFilesLines
* Add compatibility with gitignore specificationsCharley Wang2010-07-137-3/+839
| | | | | | | | | | | | | | | This patch adds ignore compatibility to jgit. It encompasses exclude files as well as .gitignore. Uses TreeWalk and FileTreeIterator to find nodes and parses .gitignore files when required. The patch includes a simple cache that can be used to save results and avoid excessive gitignore parsing. CQ: 4302 Bug: 303925 Change-Id: Iebd7e5bb534accca4bf00d25bbc1f561d7cad11b Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com> Signed-off-by: Stefan Lay <stefan.lay@sap.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Add support for updateNeeded flag in DirCacheEntryMatthias Sohn2010-07-091-0/+22
| | | | | Change-Id: If06ff41d9ccd422afbc79ecbc3cfdf8bb2508dcd Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Fix javadoc typos in JGit APIStefan Lay2010-07-083-7/+7
| | | | | | | There were some small errors which made it difficult to read the JavaDoc. Change-Id: Ib3b34353465162adebaca3514d596d0edf5aea51 Signed-off-by: Stefan Lay <stefan.lay@sap.com>
* Deprecate all of the older Tree related codeShawn O. Pearce2010-07-0720-6/+151
| | | | | | | | | We want to get rid of these APIs, because they don't perform as well as DirCache/TreeWalk, or don't offer nearly as many features. Bug: 319145 Change-Id: I2b28f9cddc36482e1ad42d53e86e9d6461ba3bfc Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Fix comparison of nanosecondsStefan Lay2010-07-061-1/+1
| | | | | | | | NB.decodeInt32(info, base + 4) already returns nanoseconds. Therefore it must not be divided by 1000000. Change-Id: Ie8f5c4a03f984d98935dccedc2b1ba4457094899 Signed-off-by: Stefan Lay <stefan.lay@sap.com>
* Fix missing flush in StreamCopyThreadDmitry Neverov2010-06-301-14/+12
| | | | | | | | | | | | | | | | | | | | It is possible that StreamCopyThread will not flush everything from it's src to it's dst. In most cases StreamCopyThread works like this: in loop: n = src.read(buf); dst.write(buf, 0, n); and when we want to flush, we interrupt() StreamCopyThread and it flushes everything it wrote to dst. The problem is that our interrupt() could interrupt reading. In this case we will flush everything we wrote to dst, but not everything we wrote to src. Change-Id: Ifaf4d8be87535c7364dd59b217dfc631460018ff Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Added check for binary files while diffingJeff Schumacher2010-06-291-0/+21
| | | | | | | | | Added a check in Diff to ensure that files that are most likely not text are not line-by-line diffed. Files are determined to be binary by checking the first 8000 bytes for a null character. This is a similar heuristic to what C Git uses. Change-Id: I2b6f05674c88d89b3f549a5db483f850f7f46c26
* Merge changes Ie56301aa,Ic2f79e85Shawn Pearce2010-06-285-0/+566
|\ | | | | | | | | | | * changes: Added further support for whitespace ignoring during diff Added support for whitespace ignoring
| * Added further support for whitespace ignoring during diffJeff Schumacher2010-06-283-0/+330
| | | | | | | | | | | | | | | | | | Added code to support ignoring leading, trailing, and changed whitespace when performing a diff operation. I also added command line options to Diff to enable the various whitespace ignoring methods. These match the flags for git diff. Change-Id: Ie56301aafad59ee3f0fe5de62719f5023cd702c8
| * Added support for whitespace ignoringJeff Schumacher2010-06-282-0/+236
| | | | | | | | | | | | | | | | | | | | | | | | | | JGit did not have support for skipping whitespace when comparing lines in RawText objects. I added a subclass of RawText that skips whitespace in its equals and hashCode methods. I used a subclass rather than adding functionality into RawText so that performance would not be impacted by extra logic. This class only supports ignoring all whitespace. Others will follow that allow other forms of whitespace ignoring. Change-Id: Ic2f79e85215e48d3fd53ec1b4ad13373dd183a4a
* | UploadPack: Avoid unnecessary flush in smart HTTPShawn O. Pearce2010-06-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Under smart HTTP the biDirectionalPipe flag is false, and we return back immediately at this point in the negotiation process. There is no need to flush the stream to the client, the request is over and it will be automatically flushed out by the higher level servlet that invoked us. Avoiding flush here allows us to only use flush after a progress message is sent during pack generation. Change-Id: Id0c8b7e95e3be6ca4c1b479e096bed6b0283b828 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Add MutableObjectId.copyFrom(AnyObjectId)Shawn O. Pearce2010-06-232-10/+16
| | | | | | | | | | | | | | | | | | | | | | This simplifies the PackIndex code, which is trying to quickly copy an existing ObjectId into a MutableObjectId. Rather than having the PackIndex violate the ObjectId's internals, expose a copy from function similar to the other ones for copying from raw byte arrays or hex formatted strings. Change-Id: I142635cbece54af2ab83c58477961ce925dc8255 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Expose AnyObjectId compareTo(byte[]) and compareTo(int[])Shawn O. Pearce2010-06-231-2/+24
| | | | | | | | | | | | | | | | | | | | Storage systems can use these implementations to compare a passed AnyObjectId with a stored representation of an ObjectId in the canonical network byte order format. This can be useful to do a binary search, or just linear scan, over an encoded storage file. Change-Id: I8c72993c4f4c6e98d599ac2c9867453752f25fd2 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Expose RefWriter constructor taking RefListShawn O. Pearce2010-06-231-2/+7
| | | | | | | | | | | | | | | | | | An implementation might prefer to use the RefList type here, and RefList is part of our public API. Expose the constructor so callers who have a RefList can take advantage of the existing sorting. Change-Id: I545867f85aa2c479d2d610024ebbe318144709c8 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Expose RefUpdate constructor to any subclassShawn O. Pearce2010-06-231-1/+10
| | | | | | | | | | | | | | | | | | | | | | When we finally move RefDirectory to the new storage.file package, its associated RefDirectoryUpdate will need visiblity to this constructor in order to initialize itself. This is true of any other repository implementation, so make it protected rather than package level visible. Change-Id: If838aec9baeb80ee2f12dcbca717657c725a9242 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Expose repository change event constructorsShawn O. Pearce2010-06-232-2/+14
| | | | | | | | | | | | | | | | | | | | | | Repository implementations outside of .lib need to be able to create these events and deliver them to listening application code. Expose and document the constructors so that they are visible when we move FileRepository into storage.file.FileRepository. Change-Id: I7fb6e8f4f5fdab683c5ebb5267673aa6d5b560bb Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | isValidRefName: Inline the forbidden ref suffix of ".lock"Shawn O. Pearce2010-06-231-1/+1
|/ | | | | | | | | | | | | | | | | | | A Git reference name must never end with ".lock", as it would confuse any existing C client that tries to obtain a clone of the repository over the network. Even if the repository isn't on a local filesystem, it still should ban that suffix. Because I plan to move LockFile to storage.file and make it a private implementation detail of the local file system storage model, we can't rely on its package level SUFFIX field here. Making it public probably won't work long-term either, as I also plan to pull storage.file into its own separate project that depends on the core library. So, just inline the constant here. Its as foribidden as ":" is. Change-Id: If85076861baeacc183b82696375a13e935ba8836 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Merge "Fix line endings"Shawn Pearce2010-06-181-3/+3
|\
| * Fix line endingsMatthias Sohn2010-06-181-3/+3
| | | | | | | | | | | | | | | | Some sources had dos line endings. Also configure all projects to use unix line endings and UTF-8 text encoding. Change-Id: I8fc9a1dbb219ffa91d1b3011b3b11b7e48e74ca7 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | Merge ""Bare" Repository should not return working directory."Shawn Pearce2010-06-164-26/+155
|\ \
| * | "Bare" Repository should not return working directory.Mathias Kinzler2010-06-164-26/+155
| |/ | | | | | | | | | | | | | | | | If a repository is "bare", it currently still returns a working directory. This conflicts with the specification of "bare"-ness. Bug: 311902 Change-Id: Ib54b31ddc80b9032e6e7bf013948bb83e12cfd88 Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
* / Make ObjectId, RefSpec, RemoteConfig, URIish serializableAndrew Bayer2010-06-164-6/+37
|/ | | | | | | Modifications to various classes in order to allow serialization for use of JGit in Hudson's git plugin. Change-Id: If088717d3da7483538c00a927e433a74085ae9e6
* Merge "Add missing @Override tags in AlternateRepositoryDatabase"Chris Aniszczyk2010-06-151-0/+3
|\
| * Add missing @Override tags in AlternateRepositoryDatabaseShawn O. Pearce2010-06-141-0/+3
| | | | | | | | Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Allow to read configured keysMathias Kinzler2010-06-151-0/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, there is no way to read the content of the Git Configuration in a way that would allow to list all configured values generically. This change extends the Config class in such a way as to being able to get a list of sections and to get a list of names for any given section or subsection. This is required in able to implement proper configuration handling in EGit (show all the content of a given configuration similar to "git config -l"). Change-Id: Idd4bc47be18ed0e36b11be8c23c9c707159dc830 Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
* | Merge changes ↵Shawn Pearce2010-06-145-21/+92
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | I53f71dc0,I3a899a3a,I3e8bd245,Ie7c9db83,If396326e,I6f4cf8da,I3bf96dd0,I3a2a43a1,I292fe88c,Ia1cf40cf * changes: git-servlet: Fix comparing uploadFactory with the wrong DISABLED instance Prefer static inner classes Override equals for SwingLane since super class PlotLane defines it Make sure a Stream is closed upon errors in IpLogGenerator Make constant static in RebuildCommitGraph Make inner classes static in http code Cache filemode in GitIndex Remove unused parent field in PlotLane Removed unused repo field in WorkDirCheckout Extend DiffFormatter API to simplify styling
| * Cache filemode in GitIndex Robin Rosenberg2010-06-131-1/+2
| | | | | | | | | | Apparently this was the intention, but never happened Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
| * Remove unused parent field in PlotLaneRobin Rosenberg2010-06-132-4/+0
| | | | | | Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
| * Removed unused repo field in WorkDirCheckoutRobin Rosenberg2010-06-131-4/+0
| | | | | | Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
| * Extend DiffFormatter API to simplify stylingRobin Rosenberg2010-06-121-12/+90
| | | | | | | | | | | | | | | | Refactor and extend the internals so users can override and intervene during formatting, e.g. to colorize output. Change-Id: Ia1cf40cfd4a5ed7dfb6503f8dfc617237bee0659 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* | Merge branch 'stable-0.8'Shawn O. Pearce2010-06-141-2/+3
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-0.8: Qualify post-0.8.4 builds JGit 0.8.4 JGit 0.8.3 Include about.html in org.eclipse.jgit artifact Fix build.properties of the JGit feature Added the standard SULA for JGit Add "resources/" as a source folder Change-Id: I4ecb0af41184ef84d104345fd1adcc4a240a38f6
| * | Qualify post-0.8.4 buildsstable-0.8Shawn O. Pearce2010-06-142-20/+20
| | | | | | | | | | | | | | | Change-Id: I21efed66921eb7e1e4010fccc9fa9af6c4150fc1 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
| * | JGit 0.8.4v0.8.4Matthias Sohn2010-06-142-20/+20
| | | | | | | | | | | | | | | | | | | | | Created wrong tags for 0.8.3 hence creating another version. Change-Id: I4e00bbcffe1cf872e2d7e3f3d88d068701fb5330 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | JGit 0.8.3Matthias Sohn2010-06-142-20/+20
| | | | | | | | | | | | | | | Change-Id: I845da83c74475d74ec25d68f53c0a4738a898550 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Include about.html in org.eclipse.jgit artifactMatthias Sohn2010-06-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is required to enable accessing legal info for org.eclipse.jgit from Help > About > Installation Details > Plugins Change-Id: I73f40dd2018112cd23102954d7647ecdbbbf0d89 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | Add "resources/" as a source folderMatthias Sohn2010-06-051-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | Building jgit with pde.build was broken without resources. Bug:315823 Change-Id: I45be510ada068b3ffab0feb30ec60f2c96a5ca32 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | Start 0.9 developmentShawn O. Pearce2010-06-142-20/+20
| |/ |/| | | | | | | Change-Id: I84173ece5100f1fcb78168e2e102b649d9466c08 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Repository can be configured with FSMarc Strapetz2010-06-0418-140/+217
| | | | | | | | | | | | | | | | | | | | | | | | | | On Windows, FS_Win32_Cygwin has been used if a Cygwin Git installation is present in the PATH. Assuming that the user works with the Cygwin Git installation may result in unnecessary overhead if he actually does not. Applications built on top of jgit may have more knowledge on the actually used Git client (Cygwin or not) and hence should be able to configure which FS to use accordingly. Change-Id: Ifc4278078b298781d55cf5421e9647a21fa5db24
* | Add support for computing a Change-Id à la GerritRobin Rosenberg2010-06-042-0/+208
| | | | | | | | | | | | | | | | | | | | | | A Change-Id helps tools like Gerrit Code Review to keeps different versions of a patch together. The Change-Id is computed as a SHA-1 hash of some of the same basic information as a commit id on the first commit intended to solve a particular problem and then reused for updated solutions. Change-Id: I04334f84e76e83a4185283cb72ea0308b1cb4182 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* | Provide a public entry method to determine whether a URI protocol is supportedAlex Blewitt2010-06-041-0/+32
|/
* Qualify post-0.8.1 buildsShawn O. Pearce2010-06-022-20/+20
| | | | | Change-Id: Id86e5876b2f684b2a272c07061a276b054ba410d Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* JGit 0.8.1v0.8.1Shawn O. Pearce2010-06-022-20/+20
| | | | | Change-Id: I3d4ac7d0617a3575019e2ed748ed2a298a988340 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Don't use interruptable pread() to access pack filesShawn O. Pearce2010-05-272-68/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The J2SE NIO APIs require that FileChannel close the underlying file descriptor if a thread is interrupted while it is inside of a read or write operation on that channel. This is insane, because it means we cannot share the file descriptor between threads. If a thread is in the middle of the FileChannel variant of IO.readFully() and it receives an interrupt, the pack will be automatically closed on us. This causes the other threads trying to use that same FileChannel to receive IOExceptions, which leads to the pack getting marked as invalid. Once the pack is marked invalid, JGit loses access to its entire contents and starts to report MissingObjectExceptions. Because PackWriter must ensure that the chosen pack file stays available until the current object's data is fully copied to the output, JGit cannot simply reopen the pack when its automatically closed due to an interrupt being sent at the wrong time. The pack may have been deleted by a concurrent `git gc` process, and that open file descriptor might be the last reference to the inode on disk. Once its closed, the PackWriter loses access to that object representation, and it cannot complete sending the object the client. Fortunately, RandomAccessFile's readFully method does not have this problem. Interrupts during readFully() are ignored. However, it requires us to first seek to the offset we need to read, then issue the read call. This requires locking around the file descriptor to prevent concurrent threads from moving the pointer before the read. This reduces the concurrency level, as now only one window can be paged in at a time from each pack. However, the WindowCache should already be holding most of the pages required to handle the working set for a process, and its own internal locking was already limiting us on the number of concurrent loads possible. Provided that most concurrent accesses are getting hits in the WindowCache, or are for different repositories on the same server, we shouldn't see a major performance hit due to the more serialized loading. I would have preferred to use a pool of RandomAccessFiles for each pack, with threads borrowing an instance dedicated to that thread whenever they needed to page in a window. This would permit much higher levels of concurrency by using multiple file descriptors (and file pointers) for each pack. However the code became too complex to develop in any reasonable period of time, so I've chosen to retrofit the existing code with more serialization instead. Bug: 308945 Change-Id: I2e6e11c6e5a105e5aef68871b66200fd725134c9 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Add a merge command to the jgit APIStefan Lay2010-05-247-0/+562
| | | | | | | | | | | Merges the current head with one other commit. In this first iteration the merge command supports only fast forward and already up-to-date. Change-Id: I0db480f061e01b343570cf7da02cac13a0cbdf8f Signed-off-by: Stefan Lay <stefan.lay@sap.com> Signed-off-by: Christian Halstrick <christian.halstrick@sap.com> Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
* Added merge support to CommitCommandChristian Halstrick2010-05-216-12/+181
| | | | | | | | | | | | | The CommitCommand should take care to create a merge commit if the file $GIT_DIR/MERGE_HEAD exists. It should then read the parents for the merge commit out of this file. It should also take care that when commiting a merge and no commit message was specified to read the message from $GIT_DIR/MERGE_MSG. Finally the CommitCommand should remove these files if the commit succeeded. Change-Id: I4e292115085099d5b86546d2021680cb1454266c Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
* Externalize strings from JGitSasa Zivkov2010-05-19138-621/+1623
| | | | | | | | | | | | | | | The strings are externalized into the root resource bundles. The resource bundles are stored under the new "resources" source folder to get proper maven build. Strings from tests are, in general, not externalized. Only in cases where it was necessary to make the test pass the strings were externalized. This was typically necessary in cases where e.getMessage() was used in assert and the exception message was slightly changed due to reuse of the externalized strings. Change-Id: Ic0f29c80b9a54fcec8320d8539a3e112852a1f7b Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
* Fix SSH deadlock during OutOfMemoryErrorShawn O. Pearce2010-05-192-4/+29
| | | | | | | | | | | | In close() method of SshFetchConnection and SshPushConnection errorThread.join() can wait forever if JSch will not close the channel's error stream. Join with a timeout, and interrupt the copy thread if its blocked on data that will never arrive. Bug: 312863 Change-Id: I763081267653153eed9cd7763a015059338c2df8 Reported-by: Dmitry Neverov <dmitry.neverov@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Fix race condition in StreamCopyThreadDmitry Neverov2010-05-191-8/+2
| | | | | | | | | | | If we get an interrupt during an IO operation (src.read or dst.write) caused by the flush() method incrementing the flush counter, ensure we restart the proper section of code. Just ignore the interrupt and continue running. Bug: 313082 Change-Id: Ib2b37901af8141289bbac9807cacf42b4e2461bd Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Remove unnecessary truncation of in-pack size during copyShawn O. Pearce2010-05-171-3/+3
| | | | | | | | | The number of bytes to copy was truncated to an int, but the pack's copyToStream() method expected to be passed a long here. Pass through the long so we don't truncate a giant object. Change-Id: I0786ad60a3a33f84d8746efe51f68d64e127c332 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Reduce the size of PackWriter's ObjectToPack instancesShawn O. Pearce2010-05-151-21/+23
| | | | | | | | | | | | | | | | | | | | | Rather than holding onto the PackedObjectLoader, only hold the PackFile and the object offset. During a reuse copy that is all we should need to complete a reuse, and the other parts of the PackedObjectLoader just waste memory. This change reduces the per-object memory usage of a PackWriter by 32 bytes on a 32 bit JVM using only OFS_DELTA formatted objects. The savings is even larger (by another 20 bytes) for REF_DELTAs. This is close to a 50% reduction in the size of ObjectToPack, making it rather worthwhile to do. Beyond the memory reduction, this change will help to make future refactoring work easier. We need to redo the API used to support copying data, and disconnecting it from the PackedObjectLoader is a good first step. Change-Id: I24ba4e621e101f14e79a16463aec5379f447aa9b Signed-off-by: Shawn O. Pearce <spearce@spearce.org>