git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[EGIT PATCH 00/23] Push implementation

From
MZMarek 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
Next: Marek Zawirski
Message 1 of 26 in “Push implementation”
  1. 00/23 Push implementationMarek Zawirski, Jun 27, 2008
  2. 01/23 Fix: let FetchProcess use fetch() instead of doFetch()Marek Zawirski, Jun 27, 2008
  3. 02/23 RefUpdate: new possible result Result.IO_FAILUREMarek Zawirski, Jun 27, 2008
  4. 03/23 Refactor TrackingRefUpdate to not hold RefSpecMarek Zawirski, Jun 27, 2008
  5. 04/23 New constructor without RefSpec for TrackingRefUpdateMarek Zawirski, Jun 27, 2008
  6. 05/23 Add RemoteRefUpdate classMarek Zawirski, Jun 27, 2008
  7. 06/23 Refactor: extract superclass OperationResult from FetchResultMarek Zawirski, Jun 27, 2008
  8. 07/23 Add PushResult classMarek Zawirski, Jun 27, 2008
  9. 08/23 Support for fetchThin and pushThin options in TransportMarek Zawirski, Jun 27, 2008
  10. 09/23 Big refactor: *Connection hierarchyMarek Zawirski, Jun 27, 2008
  11. 10/23 Add ignoreMissingUninteresting option to PackWriterMarek Zawirski, Jun 27, 2008
  12. 11/23 Add BasePackPushConnection implementing git-send-pack protocolMarek Zawirski, Jun 27, 2008
  13. 12/23 Fix: let RevWalk reset correctly before isMergedInto()Marek Zawirski, Jun 27, 2008
  14. 13/23 Add PushProcess class implementing git-send-pack logicMarek Zawirski, Jun 27, 2008
  15. 14/23 Clarify Repository#resolve() documentationMarek Zawirski, Jun 27, 2008
  16. 15/23 Add String versions of methods in RefSpecMarek Zawirski, Jun 27, 2008
  17. 16/23 Transport* - general support for push() and implementationsMarek Zawirski, Jun 27, 2008
  18. 17/23 Test cases for PushProcessMarek Zawirski, Jun 27, 2008
  19. 18/23 Test cases for RefSpec to RemoteRefUpdate conversionsMarek Zawirski, Jun 27, 2008
  20. 19/23 Repository search for command line toolsMarek Zawirski, Jun 27, 2008
  21. 20/23 Push command line utilityMarek Zawirski, Jun 27, 2008
  22. 21/23 Don't accept RefSpec with null source for fetchMarek Zawirski, Jun 27, 2008
  23. 22/23 Add new handy constructors to TransportException, PackProtocolExceptionMarek Zawirski, Jun 27, 2008
  24. 23/23 Use new TransportException constructorsMarek Zawirski, Jun 27, 2008
  25. Robin RosenbergJun 28, 2008
  26. Robin RosenbergJun 27, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.