gitoxide icon indicating copy to clipboard operation
gitoxide copied to clipboard

non-bare clone (with worktrees)

Open Byron opened this issue 3 years ago • 0 comments

Clone an entire repository via gix repository clone and checkout a working tree along with a valid index.

Tasks

  • git-odb
    • [x] all docs, sans examples
    • [x] Rename pack data/pack index Kind to Version or similar, because that's what it really is.
    • [ ] add a test to see what happens if there are a lot of small backs but limits in the amount of open handles. If we handle this gracefully, good, otherwise, add a way to auto-explode small packs which should be free thanks to the resolution phase.
  • git-object refactor
    • [x] split Id and everything hash related into git-hash
    • [x] use git-hash inside of git-features, remove cycle
  • git-config
    • [x] Thanks to a generous contribution it's mostly done and well on the way
    • [x] Push it towards 1.0
    • [x] Config type which integrates multiple files into one interface, much like a multi version of File
    • [x] Make gix organize use git-config on single files (the repository configuration)
    • [x] #191
  • git-ref
    • [x] transactional creation of refs
    • [x] iteration of refs
  • git-index
    • [x] Read an index (complete with all extensions)
    • [x] Create an index from tree (see #293 for more)
    • [x] Write index, after it was checked out and contains the latest stat information
  • git-bitmap
    • [x] pieces needed for git-index to work.
  • git-worktree
    • [x] checkout an index (files and symlinks) (See #301 for more)
    • [x] apply builtin filters
    • [x] apply external filters (one-shot and long-running)
    • [x] handle submodules
  • git-transport
    • support git remote-<protocol> programs (somehow, let's just be aware, but also be careful about the ext remote helper which executes arbitrary programs)
  • gix repository clone
    • [x] try initializing repo on output path - if so, use that to learn about pack location and place new pack there, allow Repo to create refs somehow.
      • probably this is done using the repository itself, which steers the whole process and injects it's own delegates.
    • [x] otherwise create the scaffolding needed for a new repository, probably based on init implementation.
  • gix pack receive
    • [x] resolve thin pack
  • gix
    • [x] instance for a valid looking repository
      • [x] support shallow repos/references (see also the tracking issue #450)
    • [x] create-update refs as received from clone/git-receive-pack safely (i.e. with required locking)
    • [x] clone from https remote via remote abstraction
    • [x] switch from naive to consecutive implementation (or else fetches fail from some servers)
  • Having impact
    • [ ] A GitHub Action to accelerate checkouts on CI.
      • Note that this assumption should be validated first - after all we need to download a binary first and then get that time back at the very least. For small repositories this might not be worth it, but then again, folks who think they benefit from gitoxide won't have small repositories.
      • consider having a docker action as fallback in case some platforms don't have a binary pre-built yet.
    • [ ] #449

Byron avatar Jan 22 '22 00:01 Byron