git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Announce] libgit2 v0.17.0
@ 2012-05-19  0:00 Vicent Marti
  2012-05-23 15:37 ` dag
  0 siblings, 1 reply; 4+ messages in thread
From: Vicent Marti @ 2012-05-19  0:00 UTC (permalink / raw)
  To: libgit2, git-dev, git

Hello everyone,

A new libgit2 release is here. This one is huge (most new features to
date). Check out the diff API. It's shiny.

We're nearing the 1.0.0 milestone, and things are moving much faster
now. Stay tuned for more features and more projects using the library.

The release has been tagged at:

 https://github.com/libgit2/libgit2/tree/v0.17.0

A dist package can be found at:

 https://github.com/downloads/libgit2/libgit2/libgit2-0.17.0.tar.gz

Updated documentation can be found at:

 http://libgit2.github.com/libgit2/

The full change log follows after the message.

Cheers,
Vicent

=======================

libgit2 v0.17.0 "Lord of Diffstruction"

Welcome to yet another libgit2 release, this one being the
biggest we've shipped so far. Highlights on this release
include diff, branches, notes and submodules support. The new
diff API is shiny and powerful. Check it out.

Apologies, one more time, to all the early adopters for the
breaking API changes. We've been iterating on the error
handling for the library until we reached its current state,
which we believe it's significantly more usable both for normal
users and for developers of bindings to other languages.
Also, we've renamed a few legacy calls to ensure that the whole
external API uses a consistent naming scheme.

As always, check the API docs for the full list of new API calls
and backwards-incompatible changes.

	http://libgit2.github.com/libgit2/

Changelog of new features follows:

Attributes:
	- Added function macros to check attribute values instead of having
	to manually compare them
	- Added support for choosing the attribute loading order (workdir files
	vs index) and to skip the systems' default `.gitattributes`
	- Fixed issues when fetching attribute data on bare repositories

Blob:
	- Added support for creating blobs from any file on disk (not
	restricted to the repository's working directory)
	- Aded support for smudge filters when writing blobs to the ODB
		- So far only CRLF normalization is available

Branches:
	- Added a high-level branch API:
		- git_branch_create
		- git_branch_delete
		- git_branch_list
		- git_branch_move

Commit:
	- Commit messages are now filtered to match Git rules (stripping
	comments and adding proper whitespacing rules)

Config:
	- Added support for setting and getting multivars
	- Added `git_config_get_mapped` to map the value of a config
	variable based on its defaults

Diff:
	- Added full diff API:
		- tree to tree
		- index to tree
		- workdir to index
		- workdir to tree
		- blob to blob

	- Added helper functions to print the diffs as valid patchfiles

Error handling:
	- New design for the error handling API, taking into consideration
	the requirements of dynamic languages

Indexer:
	- Added streaming packfile indexer

Merge:
	- Added support for finding the merge base between two commits

Notes:
	- Full git-notes support:
		- git_note_read
		- git_note_message/git_note_oid
		- git_note_create
		- git_note_remove
		- git_note_free
		- git_note_foreach

References:
	- Added `git_reference_name_to_oid` helper to resolve
	a reference to its final OID

	- Added `git_reference_cmp` to compare two references with
	a stable order

Remotes:
	- Added support for writing and saving remotes
		- `git_remote_add`
		- `git_remote_save`
		- Setters for all the attributes of a remote
	- Switched remote download to the new streaming packfile indexer
	- Fixed fetch on HTTP and Git under Windows
	- Added `git_remote_supported_url` helper to check if a protocol
	can be accessed by the library
	- Added `git_remote_list`

Repository:
	- Made `git_repository_open` smarter when finding the `.git` folder.
	- Added `git_repository_open_ext` with extra options when
	opening a repository

Revwalk:
	- Added support for pushing/hiding several references through a glob
	- Added helper to push/hide the current HEAD to the walker
	- Added helper to push/hide a single reference to the walker

Status:
	- Greatly improved Status implementation using the new `diff` code
	as a backend

Submodules:
	- Added a partial submodules API to get information about a
	submodule and list all the submodules in a repository
		- git_submodule_foreach
		- git_submodule_lookup

Tag:
	- Added `git_tag_peel` helper to peel a tag to its pointed object
	- Tag messages are now filtered to match Git rules (stripping comments
	and adding proper whitespacing rules)

Tree:
	- Killed the old `git_tree_diff` API, which is replaced by the
	new diff code.

Signed-off-by: Vicent Marti <tanoku@gmail.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Announce] libgit2 v0.17.0
  2012-05-19  0:00 [Announce] libgit2 v0.17.0 Vicent Marti
@ 2012-05-23 15:37 ` dag
  2012-05-23 16:51   ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: dag @ 2012-05-23 15:37 UTC (permalink / raw)
  To: Vicent Marti; +Cc: libgit2, git-dev, git

Vicent Marti <vicent@github.com> writes:

> Hello everyone,
>
> A new libgit2 release is here. This one is huge (most new features to
> date). Check out the diff API. It's shiny.

This is cool.  I've wanted this for a while.  How do you ensure that the
operation of libgit2 matches that of git proper?  Is there any plan to
slowly convert git commands over to a libgit2 implementation?

                             -Dave

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Announce] libgit2 v0.17.0
  2012-05-23 15:37 ` dag
@ 2012-05-23 16:51   ` Junio C Hamano
  2012-05-24  1:57     ` Vicent Marti
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2012-05-23 16:51 UTC (permalink / raw)
  To: dag; +Cc: Vicent Marti, libgit2, git-dev, git

<dag@cray.com> writes:

> Vicent Marti <vicent@github.com> writes:
>
>> Hello everyone,
>>
>> A new libgit2 release is here. This one is huge (most new features to
>> date). Check out the diff API. It's shiny.
>
> This is cool.  I've wanted this for a while.  How do you ensure that the
> operation of libgit2 matches that of git proper?  Is there any plan to
> slowly convert git commands over to a libgit2 implementation?

There is no "plan" in the "concrete timeline and implementation strategy"
sense, but it is what any sane person would hope is a good longer-term
direction.

But it is also a bit of a chicken and an egg problem.

I am hoping that the library would become solid enough to allow us to
start attempting such an experiment some day, but at the same time, I know
that that "some day" is not in a very near future, after having seen at
$DAYJOB that a certain internal tool linked with a version of libgit2
breaking user's trees from time to time, bugs against the internal tool
getting filed and then some of them getting fixed at libgit2 level, either
by upstreaming fix or by updating to newer snapshot of libgit2.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Announce] libgit2 v0.17.0
  2012-05-23 16:51   ` Junio C Hamano
@ 2012-05-24  1:57     ` Vicent Marti
  0 siblings, 0 replies; 4+ messages in thread
From: Vicent Marti @ 2012-05-24  1:57 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: dag, libgit2, git-dev, git

On Wed, May 23, 2012 at 6:51 PM, Junio C Hamano <gitster@pobox.com> wrote:
> I am hoping that the library would become solid enough to allow us to
> start attempting such an experiment some day, but at the same time, I know
> that that "some day" is not in a very near future, after having seen at
> $DAYJOB that a certain internal tool linked with a version of libgit2
> breaking user's trees from time to time, bugs against the internal tool
> getting filed and then some of them getting fixed at libgit2 level, either
> by upstreaming fix or by updating to newer snapshot of libgit2.

If you're building internal tools with libgit2 and encountering
issues, maybe somebody from $DAYJOB could spend some of his 20% time
in throwing us a hand pushing the library forward. That way $DAYJOB
and the whole community would benefit.

Love,
Vicent

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-05-24  1:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-19  0:00 [Announce] libgit2 v0.17.0 Vicent Marti
2012-05-23 15:37 ` dag
2012-05-23 16:51   ` Junio C Hamano
2012-05-24  1:57     ` Vicent Marti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).