[EGIT PATCH 00/23] Push implementation
- From
- Marek Zawirski <marek.zawirski@gmail.com>
- Date
- Jun 27, 2008, 22:06 UTC
- Message-ID
- <1214604407-30572-1-git-send-email-marek.zawirski@gmail.com>
Finally, series with push implementation. It has taken a "while" to squash all bugs this time and polish the series, uhh.
Part of this series is signifficant refactor of .transport package to support code reuse between fetch and push implementations + minor fixes/improvements.
Needed push operation elements were created. Implementation provides basis for different push protocols by common push process and its dendendencies. Push over git-receive-pack based transports is implemented. Shawn is now working on support for push over less git-inteligent protocols. I'm moving into GUI stuff.
Beside of JUnit test cases for (IMO) 2 most complex classes that revealed few bugs, I've tested manually pgm.Push extensively. Each protocol (SSH, local, git-daemon) was tested at least 1 time.
So now I can say, that this branch is available on http://repo.or.cz/w/egit/zawir.git?a=shortlog;h=refs/heads/push and it was pushed with jgit push! :) Yeah! It is based (together with packwriter stuff, not old packwrite branch) on egit's master: 4cf736fdf3.
BTW, in case of any comments, requests, please consider that I'm semi-off-line next ~2,5weeks, I can sync my laptop each few days, but certainly not everyday.
PS I saw that Shawn's sftp-push branch also contains new TransportException constructors conversion, so we may have to resolve this duplication, I added it as last commit.
Marek Zawirski (23):
Fix: let FetchProcess use fetch() instead of doFetch()
RefUpdate: new possible result Result.IO_FAILURE
Refactor TrackingRefUpdate to not hold RefSpec
New constructor without RefSpec for TrackingRefUpdate
Add RemoteRefUpdate class
Refactor: extract superclass OperationResult from FetchResult
Add PushResult class
Support for fetchThin and pushThin options in Transport
Big refactor: *Connection hierarchy
Add ignoreMissingUninteresting option to PackWriter
Add BasePackPushConnection implementing git-send-pack protocol
Fix: let RevWalk reset correctly before isMergedInto()
Add PushProcess class implementing git-send-pack logic
Clarify Repository#resolve() documentation
Add String versions of methods in RefSpec
Transport* - general support for push() and implementations
Test cases for PushProcess
Test cases for RefSpec to RemoteRefUpdate conversions
Repository search for command line tools
Push command line utility
Don't accept RefSpec with null source for fetch
Add new handy constructors to TransportException,
PackProtocolException
Use new TransportException constructors .../tst/org/spearce/jgit/lib/PackWriterTest.java | 45 ++-
.../spearce/jgit/transport/PushProcessTest.java | 407 ++++++++++++++++++++
.../org/spearce/jgit/transport/TransportTest.java | 181 +++++++++
.../spearce/jgit/errors/PackProtocolException.java | 30 ++
.../spearce/jgit/errors/TransportException.java | 31 ++
.../src/org/spearce/jgit/lib/PackWriter.java | 37 ++-
.../src/org/spearce/jgit/lib/RefUpdate.java | 27 ++-
.../src/org/spearce/jgit/lib/Repository.java | 2 +-
.../src/org/spearce/jgit/pgm/Fetch.java | 41 +--
.../src/org/spearce/jgit/pgm/Main.java | 24 +-
.../src/org/spearce/jgit/pgm/Push.java | 235 +++++++++++
.../src/org/spearce/jgit/pgm/TextBuiltin.java | 21 +
.../src/org/spearce/jgit/revwalk/RevWalk.java | 2 +-
.../org/spearce/jgit/transport/BaseConnection.java | 103 +++++
.../jgit/transport/BaseFetchConnection.java | 86 ++++
.../spearce/jgit/transport/BasePackConnection.java | 217 +++++++++++
...onnection.java => BasePackFetchConnection.java} | 169 +--------
.../jgit/transport/BasePackPushConnection.java | 226 +++++++++++
.../src/org/spearce/jgit/transport/Connection.java | 104 +++++
.../spearce/jgit/transport/FetchConnection.java | 127 +-----
.../org/spearce/jgit/transport/FetchProcess.java | 8 +-
.../org/spearce/jgit/transport/FetchResult.java | 74 +----
.../spearce/jgit/transport/OperationResult.java | 119 ++++++
.../org/spearce/jgit/transport/PackTransport.java | 3 +-
.../org/spearce/jgit/transport/PushConnection.java | 56 +++-
.../org/spearce/jgit/transport/PushProcess.java | 224 +++++++++++
.../src/org/spearce/jgit/transport/PushResult.java | 84 ++++
.../src/org/spearce/jgit/transport/RefSpec.java | 46 ++-
.../spearce/jgit/transport/RemoteRefUpdate.java | 315 +++++++++++++++
.../spearce/jgit/transport/TrackingRefUpdate.java | 19 +-
.../src/org/spearce/jgit/transport/Transport.java | 252 ++++++++++++-
.../spearce/jgit/transport/TransportBundle.java | 8 +-
.../spearce/jgit/transport/TransportGitAnon.java | 52 +++-
.../spearce/jgit/transport/TransportGitSsh.java | 67 +++-
.../org/spearce/jgit/transport/TransportLocal.java | 114 ++++--
.../org/spearce/jgit/transport/TransportSftp.java | 12 +-
.../jgit/transport/WalkFetchConnection.java | 2 +-
.../org/spearce/jgit/transport/WalkTransport.java | 7 +
38 files changed, 3103 insertions(+), 474 deletions(-)
create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/transport/PushProcessTest.java
create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/transport/TransportTest.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/pgm/Push.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/BaseConnection.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/BaseFetchConnection.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/BasePackConnection.java
rename org.spearce.jgit/src/org/spearce/jgit/transport/{PackFetchConnection.java => BasePackFetchConnection.java} (75%)
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/BasePackPushConnection.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/Connection.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/OperationResult.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/PushProcess.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/PushResult.java
create mode 100644 org.spearce.jgit/src/org/spearce/jgit/transport/RemoteRefUpdate.java