github go-git/go-git v4.0.0-rc10

latest releases: v5.12.0, v5.11.0, v5.10.1...
pre-release4 years ago

Highlights

v4.0.0-rc10 introduces all major functionalities to be expected in v4.0.0:

  • Working tree manipulation: status, reset, checkout, add, remove, move and commit.
  • Diff for different objects and printing to unified diff format.
  • Better submodules support.
  • Improved git log API.

The release also contains major improvements in some performance areas, APIs to work with repositories over SSH and tons of bugfixes.

Notes

  • Go 1.8 is the minimum supported version for go-git.
  • API for the top-level package, plumbing/object and plumbing/transport are frozen with this release candidate. Backwards incompatible changes from this release until v4.0.0 should be minimal and affect only very low-level packages.
  • History has been filter-branched and does not match v4.0.0-rc9 and older.

Features

  • Submodules init and update (#270)
  • plumbing/storer: add RemoveReference (#269)
  • Add Repository.Log() method (fix #298) (#337)
  • worktree: status and reset implementation (#339)
  • worktree: reset and checkout support for submodules (#344)
  • worktree: add method (#361)
  • worktree: Commit method implementation (#375)
  • worktree: Remove and Move methods (#395)
  • format/diff: unified diff encoder and public API (#388)
  • transport: ssh, NewPublicKeys support for encrypted PEM files (#355)
  • support force push (refspec with +) (#366)

API

  • git: Repository methods changes (#296)
  • git: make Storer public in Repository (#263)
  • plumbing/storer: referenceIterator now returns the error if any (#286)
  • plumbing/object: move difftree to object package (#284)
  • plumbing/revlist: input as a slice of hashes instead of commits (#292)
  • issue #274: new filemode package (#297)
  • project: move imports from srcd.works to gopkg.in (#303)
  • plumbing/object: add WalkCommitHistoryPost func (#305)
  • Export raw config (#334)
  • transport: ssh, NewPublicKeys helper (#347)
  • transport: ssh, new DefaultAuthBuilder variable (#356)
  • transport: make Endpoint an interface, fixes #362 (#365)

Bug fixes

  • plumbing/transport: git, error on empty SSH_AUTH_SOCK (#282)
  • Fix missing objects if they where deltified using ref-delta (#258)
  • difftree should ignore changes in permissions between the old, deprecated, group writable and ordinary files (#285)
  • plumbing/cache: specify units in memory size (Fix #234) (#289)
  • Return values of Read not checked (fix #65) (#299)
  • Work around a Go bug when parsing timezones (#320)
  • object: fix Change.Files() method behavior (fix #317) (#324)
  • references.go: fix Parents from commit iterator (#319)
  • add support for .git as file, fixes #348 (#363)
  • do not convert local paths to URL, Windows-related (#368)
  • format/packfile: fix bug when the delta depth is equals to 50 (#374)

Documentation

  • README: add table with supported git features (#384)
  • add git checkout example + housekeeping (#331)
  • examples: commit example (#381)
  • Improved documentation (#259)
  • plumbing: improve documentation (Fix #242) (#288)
  • Remove TODOs from documentation (#294)
  • _examples: improve documentation (fix #238) (#293)
  • improve git package documentation (fix #231) (#295)
  • Updated README in-memory example. (#316)

Internals

  • format/packfile: improve binary delta algorithm (#400)
  • Lazily load object index (#333)
  • cshared: remove directory (Fix #236) (#277)
  • cache: move package to plumbing (#278)
  • travis update to 1.8 and makefile silence commands (#283)
  • Add fast_finish flag to travis configuration (#287)
  • difftree: simplify hash comparison with deprecated files modes (#300)
  • plumbing: Use ReadBytes() rather than ReadSlice() (#314)
  • fix go vet issues, add go vet to CI (#360)
  • add test for tags push, closes #354 (#367)
  • plumbing: index, Entries converted in a slice of pointers (#364)
  • transport/server: use Endpoint string representation as a map key (#394)
  • storage: filesystem, initialize the default folder scaffolding (#398)

Don't miss a new go-git release

NewReleases is sending notifications on new releases.