This repository has been archived by the owner on Sep 11, 2020. It is now read-only.
v4.0.0-rc10
Pre-release
Pre-release
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)