Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jgit-dev] Refactoring Repository work

I am very close to something that is sane.  Like anything else I
seem to do, the series is huge, but compiles, passes the tests,
and does what I set out to do: make Repository abstract.  It also
seems to be faster [4], and has some nice API features [5].

At this point, I have no plans to go back and edit these commits.
Unless there is a really serious bug in one of these that someone
else can identify, and even then, I'd probably fix it as a follow-up
instead of squashed edit.

What's next on my plate is:

 * Refactor IndexPack so receive doesn't require FileRepository
 * Validate all ObjectInserter, ObjectReaders are released
 * Implement ObjectStream for large binaries
 * Use ObjectStream when blobs are processed

I'm going to try to get these done this coming week.


The series is available on egit [1], github [2], and orcz [3].

[1] http://egit.eclipse.org/r/974
[2] http://github.com/spearce/jgit/tree/rename-repository
[3] http://repo.or.cz/w/jgit/spearce.git/shortlog/refs/heads/rename-repository
[4] http://repo.or.cz/w/jgit/spearce.git/commit/3a7aec03e07ac853df5a00cbf06e6cd5e4ba2bc2
[5] http://repo.or.cz/w/jgit/spearce.git/blob/532421d98925f23ddaa63c8d5f22be24879a6385:/org.eclipse.jgit/src/org/eclipse/jgit/lib/RepositoryBuilder.java

Shawn O. Pearce (45):
      Remove test of the unsupported core.legacyHeaders variable
      Use higher level Config types when possible
      Use CoreConfig, UserConfig and TransferConfig directly
      Use RevTag/RevCommit to sort in a PlotWalk
      Replace manual peel loops with RevWalk.peel
      Rewrite resolve in terms of RevWalk
      UploadPack: Permit flushing progress messages under smart HTTP
      Disable topological sorting in PackWriter
      DirCache must use getIndexFile
      Use FileKey to resolve Git repository arguments
      Download pack-*.idx to /tmp if not on local filesystem
      Refactor amazon-s3:// property file loading to support no directory
      Move additional have enumeration to Repository
      Cleanup Repository.create()
      Delegate repository access to refs, objects
      Remove RepositoryConfig and use FileBasedConfig instead
      Rename Repository 'config' as 'repoConfig'
      Add RepositoryState.BARE
      Consistently use getDirectory() for work tree state
      Consistently fail work tree methods on bare repositories
      Make lib.Repository abstract and lib.FileRepository its implementation
      Use FileRepository where we assume other file semantics
      Change Repository.getConfig() to return non-file Configs
      Refactor object writing responsiblities to ObjectDatabase
      Start using ObjectInserter instead of ObjectWriter
      Refactor alternate object databases below ObjectDirectory
      Replace WindowCache with ObjectReader
      Use ObjectInserter for loose objects in WalkFetchConnection
      Remove Repository.toFile(ObjectId)
      Refactor repository construction to builder class
      Rename Repository getWorkDir to getWorkTree
      Redo event listeners to be more generic
      Allow Repository.getDirectory() to be null
      Use getObjectsDatabase().getDirectory() to find objects
      Extract ObjectToPack to be top-level
      Extract PackFile specific code to ObjectToPack subclass
      Reclaim some bits in ObjectToPack flags field
      Redo PackWriter object reuse selection
      Redo PackWriter object reuse output
      Implement zero-copy for single window objects
      Move FileRepository to storage.file.FileRepository
      Tighten up local packed object representation during packing
      Remove getRawSize, getRawType from ObjectLoader
      Simplify ObjectLoaders coming from PackFile
      Move PackWriter over to storage.pack.PackWriter

 171 files changed, 4923 insertions(+), 3636 deletions(-)

-- 
Shawn.


Back to the top