Changelog for v0.x Series
v0.8.0
04 April 2020
- Implement
Xgit.Config
module. This is roughly analogous to thegit config
command. (#314, #315) - [API BREAKING] Add configuration APIs to
Xgit.Repository.Storage
behaviour. (#284) - [API BREAKING]
Xgit.ConfigFile
APIs are very unlikely to return POSIX errors. (#312) - Bump credo from 1.2.2 to 1.3.2 (#309, #316)
- Bump excoveralls from 0.12.2 to 0.12.3 (#311)
- Bump dialyxir from 1.0.0-rc.7 to 1.0.0 (#310)
OnDiskRepoTestCase
: Fix up a few minor issues. (#306)- Match
git init
behavior of more recent comamnd-line git versions. (#305) - [API BREAKING] Replace
Xgit.ConfigFile.add_entries/3
withXgit.ConfigFile.update/3
. (#303) - Add an option to OnDiskRepoTestCase.repo!/1 to override initial config file content. (#301, #302)
v0.7.3
09 February 2020
- Implement
Xgit.ConfigFile
, which reads and writes git-style config files. (#283, #287, #289, #294, #295, #296, #297) - Implement
Xgit.ConfigEntry
, which represents a single entry in a config file. (#283) - Add Elixir 1.10 to test matrix. (#293)
- Bump credo from 1.1.5 to 1.2.2. (#290, #298)
- Bump ex_doc from 0.21.2 to 0.21.3. (#291)
- Bump excoveralls from 0.12.1 to 0.12.2. (#288)
- Remove
Xgit.Util.FileSnapshot
. (#286) - Implement
Xgit.Util.ObservedFile
. (#285) - Adapt some of git's tests for
git init
. (#282)
v0.7.2
07 January 2020
- Implement
Xgit.Repository.tag/4
. This is an API equivalent to the creation case ofgit tag
. (#278) - Transfer responsibility for enforcing tag target type to
Xgit.Repository.Plumbing
. (#279) - Implement
Xgit.Tag.valid_name?/1
. (#277) - Implement
Xgit.Tag.to_object/1
. (#276) - Remove
Xgit.GitInitTestCase
. (#275)
v0.7.1
30 December 2019
- Implement
Xgit.Repository.Plumbing.cat_file_tag/2
. (#272) This is an API equivalent togit cat_file -p
when the target object is of typetag
. - Implement
Xgit.Tag.from_object/1
. (#270, #271) - Implement
Xgit.ObjectType.from_bytelist/1
. (#269) - Back to 100% code coverage. (#268)
- Define
Xgit.Tag
, which describes atag
object in memory. (#267)
v0.7.0
21 December 2019
- Implement
Xgit.Repository.Plumbing.delete_symbolic_ref/2
. (#263) This is an API analogue forgit symbolic-ref --delete (ref_name)
. - Parse, don't validate. Redefine Storage type to be
{:xgit_repo, pid}
and optimize for the case where the PID has been remembered. (#265) - [API BREAKING] Replace
{:error, :invalid_repository}
response with error. (#264) - [API BREAKING] Rework
Xgit.Repository.Plumbing.delete_ref/3
to trace (or not) symbolic links. (#262) - Implement
Xgit.Repository.Plumbing.get_symbolic_ref/2
. (#261)
v0.6.0
15 December 2019
This is a significant refactoring release aimed at making Xgit's APIs easier to understand.
- Documentation tweak: Put
Xgit.Repository.WorkingTree
in repository group. (#259) - [API BREAKING] Move index file format parsing into
Xgit.DirCache
module. (#258) - [API BREAKING] Rename
Xgit.Core.*
modules toXgit.*
. (#257) - Introduce new
Xgit.Repository
module. (#256) - Merge all the plumbing commands together into a single module. (#255)
- Rename
Xgit.Repository
toXgit.Repository.Storage
. (#254)
v0.5.0
05 December 2019
- Implement
Xgit.Plumbing.SymbolicRef.Put
. (#252) This is an API analogue to the 2-argument form ofgit symbolic-ref
. - [API BREAKING]
Xgit.Repository.put_ref/4
: Add:follow_link?
option. (#250) Xgit.Repository.put_ref/4
: Should not fail if creating a sym ref to a non-existent ref. (#247)- Share the code for ref-related tests in
Xgit.Repository
implementations. (#246) Xgit.Repository.InMemory
: Remove a line of code that is unreachable. (#245)
v0.4.0
28 November 2019
- Implement
Xgit.Plumbing.UpdateRef
. (#242) This is an API equivalent togit update-ref
. - [API BREAKING] Add reference operations to
Xgit.Repository
interface. (#222, #230, #231, #233, #236, #238, #239) - Run
mix credo
andmix format --check-formatted
separately. (#221) - Avoid the
mix deps.get
andmix deps.compile
steps via cache. (#220) - Start using GitHub actions to build PRs. (#215, #218)
- Switch from Coveralls to CodeCov. (#216)
TrailingHashDevice
test frequently times out. Give it more time. (#217)- Move all the implementation details for
Xgit.Repository.OnDisk
into a single file. (#214) - Implement
Xgit.Util.FileUtils.recursive_files!/1
. (#213) - Implement
Xgit.Core.Ref
. (#211, #212, #229, #232, #235, #237, #240) - Bump excoveralls from 0.11.2 to 0.12.1 (#210, #234)
v0.3.0
19 October 2019
- Implement
Xgit.Plumbing.CatFile.Commit
. This is an API equivalent togit cat-file -p
when the target object is of typecommit
. (#207) - Implement
Xgit.Core.Commit.from_object/1
. (#204, #205, #206) - [API BREAKING] Make
Xgit.Util.*
modules private. (#201) - [API BREAKING] Remove
Xgit.Util.RawParseUtils
. (#195, #198, #199, #200) - Move
parse_timzeone_offset
intoXgit.Core.PersonIdent
. (#197) - Implement
Xgit.Util.ParseCharlist.decode_ambiguous_charlist/1
. (#196) - Bump credo from 1.1.4 to 1.1.5 (#194)
v0.2.5
08 October 2019
- Implement
Xgit.Plumbing.CommitTree
. (#191) - Introduce
Xgit.Core.Commit
struct. (#182) - [BUG FIX]: Unable to decode certain
tree
structures. (#183) - Implement
Xgit.Core.Commit.to_object/1
. (#184) - Fix broken
coveralls-ignore
comments. (#186) - Refactor the basics of how tests are set up. (#187)
- Clean up issues flagged by ElixirLS. (#188)
OnDiskRepoTestCase
: Make it possible to override the temporary directory for testing purposes. (#189, #190)
v0.2.4
28 September 2019
- Implement
Xgit.Plumbing.ReadTree
. This is an API equivalent togit read-tree
. (#180) - First benchmark: Looking at
Xgit.Repository.WorkingTree.ParseIndexFile.from_iodevice/1
. (#167) - Implement
WorkingTree.reset_dir_cache/1
. (#169) - Implement
Xgit.Repository.WorkingTree.write_tree/2
. (#170) - Refactor
Xgit.Plumbing.WriteTree
to useWorkingTree.write_tree/2
. (#171) - Minimal extension support for index file parsing. (#173)
- Bump
dialyxir
from 1.0.0-rc.6 to 1.0.0-rc.7 (#174) - Pull out index file as part of WorkingTree state. (#177)
- Implement
Xgit.Repository.WorkingTree.read_tree/3
. (#176)
v0.2.3
16 September 2019
- Implement
Xgit.Plumbing.CatFile.Tree
. This is an API equivalent togit cat-file -p
when the target object is of typetree
. (#165) Object.valid?/1
: Require that content has an implementation forContentSource
protocol. (#161)- [BUG FIX]
OnDisk
's implementation ofget_object/2
didn't contain a validContentSource
. (#162) - Implement
Xgit.Core.ObjectId.from_raw_object_id/1
. (#163) - Implement
Xgit.Core.Tree.from_object/1
. (#164)
v0.2.2
07 September 2019
- Implement
Xgit.Plumbing.WriteTree
. This is an API equivalent togit write-tree
. (#158) - Fix
@spec
forXgit.Plumbing.HashObject.run/2
. (#142) - Implement
Xgit.Core.DirCache.fully_merged?/1
. (#143) - Remove redundant alias in
Xgit.Core.Object
. (#144) - Implement
Xgit.Core.FilePath.ensure_trailing_separator/1
. (#145) - Implement
Xgit.Core.FilePath.starts_with?/2
. (#146) - Implement
Xgit.Core.Tree
struct. (#147) - Implement
Xgit.Core.FileMode.to_octal/1
. (#149) - Implement
Xgit.Core.ObjectId.to_binary_iodata/1
. (#150) - Bump ex_doc from 0.21.1 to 0.21.2 (#151)
- Bump credo from 1.1.3 to 1.1.4 (#152)
- Implement
Xgit.Core.Tree.to_object/1
. (#153) Xgit.Core.FileMode
: Replaceto_octal/1
withto_short_octal/1
. (#154)DirCache.valid?/1
should not allow a file and directory to exist at the same prefix. (#155)- Implement
Xgit.Core.DirCache/to_tree_objects/2
. (#156) - Implement
Xgit.Repository.has_all_object_ids?/2
. (#157)
v0.2.1
01 September 2019
- Force code coverage for cases where a literal value is returned. (#122)
v0.2.0
28 August 2019
- This is a refactoring release. It breaks API compatibility, thus the secondary version bump.
- Introduce a common data type for less-than / equal / greater-than comparisons. (#128)
- [API BREAKING] Refactor file path code into new module
Xgit.Core.FilePath
. (#129) - Introduce
Xgit.Core.DirCache.Entry.stage
type for index file stage references. (#130) - [API BREAKING] Merge
Xgit.Core.ValidateObject
intoXgit.Core.Object
. (#132) - Share code for finding working tree in plumbing command modules. (#134)
- Update several dependencies. (#135, #136, #137)
v0.1.6
27 August 2019
- Implement
Xgit.Plumbing.UpdateIndex.CacheInfo
. (#125) This is an API equivalent ofgit update-index --cacheinfo
. - Implement
DirCache.add_entries/2
. (#97) Xgit.Util.TrailingHashDevice
: Add support for writing files. (#108)Xgit.Util.NB
: Add encode_uint32 function. (#109)- Fix
@type
declaration forParseIndexFile.from_iodevice_reason
. (#110) FolderDiff
: Exposeassert_files_are_equal/2
. (#111)- Implement
Xgit.Util.NB.encode_uint16/1
. (#112) - Implement
Xgit.Repository.WorkingTree.WriteIndexFile
. (#115) - Implement
Xgit.Core.DirCache.remove_entries/2
. (#119) - Implement
Xgit.Repository.WorkingTree.update_dir_cache/3
. (#123)
v0.1.5
19 August 2019
- This is a bug fix and optimization release.
- When reading
.git/index
file, verify the trailling SHA-1 hash. (#98, #99, #100, #101, #102, #103) - Generate code coverage for
Xgit.Util.UnzipStream
:continue
case. (#104) - Remove unnecessary data transformations in
Xgit.Repository.OnDisk.PutLooseObject
. (#105)
v0.1.4
17 August 2019
- Fix logo in exdoc. (#95)
v0.1.3
17 August 2019
- Fix a couple minor issues in documentation. (#92, #93, #94)
v0.1.2
17 August 2019
- Implement
Xgit.Plumbing.LsFiles.Stage
. (#90) This is an API equivalent ofgit ls-files --stage
. - Implement
Xgit.Repository.WorkingTree
. (#72, #80, #89) - Implement
Xgit.Core.DirCache
. (#65, #70, #71, #73, #85) - Automatically attach a working tree to on-disk repository. (#84)
- Implement
Xgit.Util.FileSnapshot
(borrowed from old jgit port). (#83) - Add Elixir 1.9.1 and OTP 22.0 to test matrix. (#82)
- Add
valid?/1
test functions to mostXgit.Core.*
modules. (#74, #76, #77, #78) - Add a second implementation (in-memory) of
Xgit.Repository
. (#68)
v0.1.1
10 August 2019
- Implement
Xgit.Plumbing.CatFile
. (#59) - Implement
Xgit.Util.UnzipStream
. (#51) - Fix documentation for
Repository.handle_put_loose_object/2
. (#53) - Implement
Xgit.Repository.get_object/2
. (#54) - Add Xgit logo and hex.pm badges. (#55)
- Change all
{:error, (string)}
tuples to be{:error, (atom)}
. (#58) - Update
@spec
documentation to call out all possible reason codes. (#60) - Add Dialyxir as dev-only dependency and fix warnings it reported. (#61)
v0.1.0
03 August 2019
- Initial public release of this version.
- Implement
Xgit.Plumbing.HashObject
. - Implement
Xgit.Repository.OnDisk.create/1
.