|
9e35d7fd
|
2012-05-24T13:44:24
|
|
Fix bugs in UTF-8 <-> UTF-16 conversion
The function to convert UTF-16 to UTF-8 was only allocating a
buffer of wcslen(utf16str) bytes for the UTF-8 string, but that
is not sufficient if you have multibyte characters, and so when
those occured, the conversion was failing. This updates the
conversion functions to use the Win APIs to calculate the correct
buffer lengths.
Also fixes a comparison in the unit tests that would fail if
you did not have a particular environment variable set.
|
|
23059130
|
2012-05-24T12:45:20
|
|
Get user's home dir in UTF-16 clean manner
On Windows, we are having problems with home directories
that have non-ascii characters in them. This rewrites the
relevant code to fetch environment variables as UTF-16 and
then explicitly map then into UTF-8 for our internal usage.
|
|
7a361e93
|
2012-05-19T10:48:15
|
|
Merge pull request #715 from schu/cleanup-misc
Cleanup
|
|
54db1a18
|
2012-05-19T13:20:55
|
|
Cleanup
* indexer: remove leftover printf
* commit: remove unused macros COMMIT_BASIC_PARSE, COMMIT_FULL_PARSE
and COMMIT_PRINT
|
|
f7ed0c34
|
2012-05-19T07:10:22
|
|
Merge pull request #713 from waywardmonkeys/spelling
Fix spelling errors.
|
|
d73c94b2
|
2012-05-19T20:24:55
|
|
Fix spelling errors.
|
|
ad5df35a
|
2012-05-19T01:40:46
|
|
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>
|
|
59d91979
|
2012-05-18T13:53:38
|
|
Merge pull request #710 from libgit2/breaking-changes
Break everything before the release
|
|
498b72eb
|
2012-05-18T04:38:15
|
|
Merge pull request #711 from schu/fetch-local-dummy
fetch: set dummy function for local fetch
|
|
a167002f
|
2012-05-18T12:36:25
|
|
fetch: set dummy function for local fetch
Local fetch isn't implemented yet. Don't segfault on call, but set a
dummy for negotiate_fetch and terminate gracefully.
Reported-by: Brad Harder <bch@methodlogic.net>
|
|
6ec01e63
|
2012-05-17T16:51:17
|
|
Merge pull request #685 from nulltoken/fix/list-remote-branches
branch: retrieve symbolic references when listing the branches
|
|
904b67e6
|
2012-05-18T01:48:50
|
|
errors: Rename error codes
|
|
e172cf08
|
2012-05-18T01:21:06
|
|
errors: Rename the generic return codes
|
|
2e2e9785
|
2012-05-18T00:42:24
|
|
Properly tag all `enums` with a `_t`
|
|
4fbd1c00
|
2012-05-17T20:35:48
|
|
refs: git_reference_listall -> git_reference_list
|
|
fe3bcf7d
|
2012-05-11T12:20:19
|
|
errors: Remove old comments
|
|
255c38c5
|
2012-05-10T11:50:29
|
|
global: Fix unit tests after reordering
|
|
29e948de
|
2012-05-10T10:38:10
|
|
global: Change parameter ordering in API
Consistency is good.
|
|
392eced6
|
2012-05-11T22:22:14
|
|
branch: retrieve symbolic references when listing the branches
|
|
52695898
|
2012-05-17T14:46:44
|
|
Merge pull request #709 from arrbee/profiling-with-scottg
Profiling with scottg
|
|
e3557172
|
2012-05-17T14:44:17
|
|
No point in keeping commented out fn
|
|
88d6e044
|
2012-05-17T14:25:42
|
|
Merge pull request #708 from arrbee/fix-empty-workdir-iterator
Fix workdir iterators on empty directories
|
|
6e5c4af0
|
2012-05-17T14:21:10
|
|
Fix workdir iterators on empty directories
Creating a workdir iterator on a directory with absolutely
no files was returning an error (GIT_ENOTFOUND) instead of
an iterator for nothing. This fixes that and includes two
new tests that cover that case.
|
|
a0d95962
|
2012-05-17T13:14:17
|
|
Other optimization and warning fixes
This fixes a warning left by the earlier optimization and
addresses one of the other hotspots identified by GProf.
|
|
b59c73d3
|
2012-05-17T13:06:20
|
|
Optimize away git_text_gather_stats in diff
GProf shows `git_text_gather_stats` as the most expensive call
in large diffs. The function calculates a lot of information
that is not actually used and does not do so in a optimal
order. This introduces a tuned `git_buf_is_binary` function
that executes the same algorithm in a fraction of the time.
|
|
706a9974
|
2012-05-17T13:05:17
|
|
Basic setup for profiling
This fixes the examples so they will build and adds a PROFILE
option to the CMakeFile that enabled gprof info on non-Windows
|
|
db756d58
|
2012-05-16T17:18:17
|
|
Merge pull request #706 from arrbee/fix_592_again
Fix status for files under ignored dirs
|
|
bd4ca902
|
2012-05-16T17:02:06
|
|
Fix status for files under ignored dirs
There was a bug where tracked files inside directories that were
inside ignored directories where not being found by status. To
make that a little clearer, if you have a .gitignore with:
ignore/
And then have the following files:
ignore/dir/tracked <-- actually a tracked file
ignore/dir/untracked <-- should be ignored
Then we would show the tracked file as being removed (because
when we got the to contained item "dir/" inside the ignored
directory, we decided it was safe to skip -- bzzt, wrong!).
This update is much more careful about checking that we are
not skipping over any prefix of a tracked item, regardless of
whether it is ignored or not.
As documented in diff.c, this commit does create behavior that
still differs from core git with regards to the handling of
untracked files contained inside ignored directories. With
libgit2, those files will just not show up in status or diff.
With core git, those files don't show up in status or diff
either *unless* they are explicitly ignored by a .gitignore
pattern in which case they show up as ignored files.
Needless to say, this is a local behavior difference only, so
it should not be important and (to me) the libgit2 behavior
seems more consistent.
|
|
38f4f158
|
2012-05-16T13:43:16
|
|
Merge pull request #705 from nulltoken/fix/note_list_callback_signature
notes: make git_note_foreach() callback signature easier to cope with from a binding perspective
|
|
ee7680d5
|
2012-05-16T21:21:24
|
|
notes: make git_note_foreach() callback signature easier to cope with from a binding perspective
|
|
eb270884
|
2012-05-16T19:17:32
|
|
clar: Fix warning
|
|
cedf9ca9
|
2012-05-16T19:16:35
|
|
tree: Kill the `git_tree_diff` functions
These are deprecated and replaced with the diffing code in git2/diff.h
|
|
9d0011fd
|
2012-05-16T19:23:47
|
|
tree: Naming conventions
|
|
9bd5a99f
|
2012-05-16T10:22:49
|
|
Merge pull request #700 from cholin/revwalk_reset
really reset walker with git_revwalk_reset
|
|
c261c272
|
2012-05-16T09:57:45
|
|
Merge pull request #702 from arrbee/fix-status-file
Update git_status_file and add ranged iterators
|
|
b206d74c
|
2012-05-16T04:40:32
|
|
Merge pull request #703 from carlosmn/consistency
A few indexer consistency checks
|
|
2c833917
|
2012-05-15T16:33:05
|
|
Document git_buf_common_prefix
This function fills in a git_buf with the common prefix of
an array of strings, but let's make that a little more clear.
|
|
6a9d61ef
|
2012-05-15T15:08:54
|
|
indexer: add more consistency checks
Error out in finalize if there is junk after the packfile hash or we
couldn't process all the objects.
|
|
58ffeb9c
|
2012-05-15T14:51:30
|
|
Fix notes to use new fixed iterator signature
|
|
41a82592
|
2012-05-15T14:17:39
|
|
Ranged iterators and rewritten git_status_file
The goal of this work is to rewrite git_status_file to use the
same underlying code as git_status_foreach.
This is done in 3 phases:
1. Extend iterators to allow ranged iteration with start and
end prefixes for the range of file names to be covered.
2. Improve diff so that when there is a pathspec and there is
a common non-wildcard prefix of the pathspec, it will use
ranged iterators to minimize excess iteration.
3. Rewrite git_status_file to call git_status_foreach_ext
with a pathspec that covers just the one file being checked.
Since ranged iterators underlie the status & diff implementation,
this is actually fairly efficient. The workdir iterator does
end up loading the contents of all the directories down to the
single file, which should ideally be avoided, but it is pretty
good.
|
|
73d87a09
|
2012-05-15T21:42:01
|
|
Introduce GITERR_INDEXER
|
|
0b86fdf9
|
2012-05-15T17:03:07
|
|
really reset walker with git_revwalk_reset
From the description of git_revwalk_reset in revwalk.h the function should
clear all pushed and hidden commits, and leave the walker in a blank state (just like at creation).
Apparently everything gets reseted appart of pushed commits (walk->one and walk->twos)
This fix should reset the walker properly.
|
|
54695f40
|
2012-05-14T13:28:13
|
|
Merge pull request #699 from nulltoken/fix/compilation-warnings
Fix compilation warnings
|
|
d5ed6348
|
2012-05-14T22:24:58
|
|
Fix compilation warnings
|
|
87d6138e
|
2012-05-14T13:17:19
|
|
Merge pull request #696 from nulltoken/topic/notes-list
Add git_note_foreach()
|
|
79fdde49
|
2012-05-14T22:15:53
|
|
Revert "Specifiy dllimport to MSVC if we're not building libgit2.dll"
This reverts commit 1093e2de22f6ca245b09d758a3510899a8362048.
|
|
86ecd844
|
2012-05-08T17:58:40
|
|
notes: add git_notes_foreach()
|
|
1c3a5a03
|
2012-05-14T11:25:55
|
|
Merge pull request #693 from nulltoken/topic/enhance_branch_move_test_coverage
branch: cover with test that moving a non existing branch returns ENOTFOUND
|
|
8c6329ee
|
2012-05-14T11:25:40
|
|
Merge pull request #692 from nulltoken/fix/delete-branch_ENOTFOUND
branch: make git_branch_delete() return GIT_ENOTFOUND when the branch doesn't exist
|
|
c9e9ec97
|
2012-05-14T11:24:37
|
|
Merge pull request #688 from hanwen/master
See issue https://github.com/libgit2/libgit2/issues/680
|
|
1093e2de
|
2012-05-11T04:25:23
|
|
Specifiy dllimport to MSVC if we're not building libgit2.dll
Building a "shared object" (DLL) in Windows includes 2 steps:
- specify __declspec(dllexport)
when building the library itself. MSVC will disallow itself from
optimizing these symbols out and reference them in the PE's
Exports-Table.
Further, a static link library will be generated. This library
contains the symbols which are exported via the declsepc above.
The __declspec(dllexport) becomes part of the symbol-signature
(like parameter types in C++ are 'mangled' into the symbol name,
the export specifier is mingled with the name)
- specify __declspec(dllimport)
when using the library. This again mingles the declspec into the
name and declares the function / variable with external linkage.
cmake automatically adds -Dgit2_EXPORTS to the compiler arguments
when compiling the libgit2 project.
The 'git2' is the name specified via PROJECT() in CMakeLists.txt.
|
|
e49cb168
|
2012-05-14T11:03:30
|
|
Merge pull request #671 from nulltoken/topic/blob_create_fromdisk
Add git_blob_create_fromdisk()
|
|
72bfde97
|
2012-05-14T11:01:14
|
|
Merge pull request #681 from scottjg/solaris-fixes
Fix build/runtime issues on Solaris
|
|
27f5b7cf
|
2012-05-14T10:58:23
|
|
Merge pull request #682 from arrbee/attribute-cache-buster
Attribute cache buster
|
|
0c9a5565
|
2012-05-11T04:12:18
|
|
Add missing GIT_EXTERN declarations
|
|
546ca939
|
2012-05-14T10:50:20
|
|
Merge pull request #689 from scunz/visibility-gcc
Use -fvisibility=hidden in GCC builds
|
|
0d6b776c
|
2012-05-14T10:49:42
|
|
Merge pull request #694 from nulltoken/topic/mergebase-test-coverage
mergebase: enhance test code coverage
|
|
8f12d136
|
2012-05-14T09:37:13
|
|
Merge pull request #695 from nulltoken/topic/iterator_free_null_tolerant
iterator: prevent git_iterator_free() from segfaulting when being passed a NULL iterator
|
|
212eb09d
|
2012-05-13T23:12:51
|
|
Add a test to verify FILENAME_MAX
Since we now rely on it (at least under Solaris), I figured we probably
want to make sure it's accurate. The new test makes sure that creating a
file with a name of length FILENAME_MAX+1 fails.
|
|
87fe3507
|
2012-05-13T19:09:25
|
|
iterator: prevent git_iterator_free() from segfaulting when being passed a NULL iterator
|
|
7327a090
|
2012-05-13T12:21:00
|
|
mergebase: enhance test code coverage
|
|
f0b350eb
|
2012-05-07T11:48:39
|
|
tests: make sure we clean up in objects/blob/write.c
|
|
6ca9643c
|
2012-05-06T21:00:20
|
|
blob: Add git_blob_create_fromdisk()
This function will create blobs in the object database from files anywhere on the filesystem. This can be run against bare and non-bare repositories.
|
|
48ce97dd
|
2012-05-13T11:03:29
|
|
branch: cover with test that moving a non existing branch returns ENOTFOUND
|
|
341a7136
|
2012-05-13T10:17:52
|
|
branch: make git_branch_delete() return GIT_ENOTFOUND when the branch doesn't exist
|
|
24634c6f
|
2012-05-12T15:01:39
|
|
Handle duplicate objects from different backends in git_odb_read_prefix().
|
|
6fb1c0b4
|
2012-05-09T23:45:55
|
|
Fix readdir_r() usage for Solaris
On Solaris, struct dirent is defined differently than Linux. The field
containing the path name is of size 0, rather than NAME_MAX. So, we need to
use a properly sized buffer on Solaris to avoid a stack overflow.
Also fix some DIR* leaks on cleanup.
|
|
b15bef23
|
2012-05-12T11:12:42
|
|
Use -fvisibility=hidden in GCC builds
|
|
b72969e0
|
2012-05-12T01:51:58
|
|
Merge pull request #683 from arrbee/better-repo-init
Improve repo initialization to be more like git
|
|
cd062ee2
|
2012-05-12T01:42:21
|
|
Merge pull request #687 from nulltoken/fix/object-lookup-take-2
object: make git_object_lookup() return GIT_ENOTFOUND - The sequel
|
|
e28c3776
|
2012-05-11T23:56:23
|
|
object: make git_object_lookup() return GIT_ENOTFOUND when searching for an existing object by specifying an incorrect type
This fix complements cb0ce16bbe8efe2098ef9cfffcf158301b036565 and cover the following additional use cases
- retrieving an object which has been previously searched, found and cached
- retrieving an object through an non ambiguous abbreviated id
|
|
41178b41
|
2012-05-11T21:49:33
|
|
examples: fix an oopsie
|
|
db628072
|
2012-05-11T12:16:19
|
|
Fixed leaks and added tests
|
|
b1ec25fa
|
2012-05-10T17:16:24
|
|
Fix comment typo in common.h
|
|
54bdc64a
|
2012-05-10T00:37:03
|
|
Fix rmdir() usage on Solaris
On Solaris, rmdir() throws EEXIST if the folder is not empty, so just add
one more case to check for that, alongside ENOTEMPTY.
|
|
a7c09c0d
|
2012-05-10T11:15:37
|
|
Fixed mode on clar
|
|
dc13f1f7
|
2012-05-10T11:08:59
|
|
Add cache busting to attribute cache
This makes the git attributes and git ignores cache check
stat information before using the file contents from the
cache. For cached files from the index, it checks the SHA
of the file instead. This should reduce the need to ever
call `git_attr_cache_flush()` in most situations.
This commit also fixes the `git_status_should_ignore` API
to use the libgit2 standard parameter ordering.
|
|
ec42eafd
|
2012-05-09T22:30:57
|
|
Hook up Windows compat fnmatch() for Solaris
Since Solaris does not support some of the same flags as glibc fnmatch(),
we just use the implementation we have for Windows.
Now that it's no longer a windows-specific thing, I moved it into compat/
instead of win32/
|
|
fb49bdf9
|
2012-05-10T16:52:12
|
|
examples: update network examples error handling
Use giterr_last() and make sure it's not NULL.
|
|
a9d9965b
|
2012-05-09T22:54:24
|
|
clar: Update from upstream
|
|
4374f187
|
2012-05-09T12:34:13
|
|
Merge pull request #678 from nulltoken/fix/msvc-weird-error
Fix MSVC compilation issue
|
|
1956693f
|
2012-05-09T21:14:49
|
|
Fix MSVC compilation issue
exp() is already defined in math.h. This leads to LMSVC complaining
..\..\libgit2\tests-clar\diff\blob.c(5): error C2365: 'exp' : redefinition; previous definition was 'function'
Renaming the variable fixes this issue.
|
|
dc34da6e
|
2012-05-08T13:50:40
|
|
Improve repo initialization to be more like git
This adds a bunch of template files to the initialization for
hooks, info/exclude, and description. This makes our initialized
repo look more like core gits.
|
|
2aa1e94d
|
2012-05-09T10:30:34
|
|
Fix 64-bit build warning
|
|
075d6e7d
|
2012-05-09T10:18:54
|
|
Merge pull request #679 from nulltoken/fix/git__isspace
util: Fix git__isspace() implementation
|
|
b470019f
|
2012-05-09T18:01:23
|
|
tests-clar/diff: fix missing-prototype warning
|
|
11678b37
|
2012-05-09T16:18:13
|
|
fetch: filter tag annotation pseudo-refs while generating wants
These objects aren't considered as being advertised, so asking for
them will cause the remote end to close the connection. This makes the
checking in update_tips() unnecessary, because they don't get inserted
in the list.
|
|
0536afca
|
2012-05-09T14:10:30
|
|
remote: don't try to create tag annotations as refs/tags/v0.1.0^{}
Skip them for now. Eventually we might want to filter these out
earler.
|
|
9cd25d00
|
2012-05-09T13:21:21
|
|
util: Fix git__isspace() implementation
The characters <space>, <form-feed>, <newline>, <carriage-return>, <tab>, and <vertical-tab> are part of the "space" definition.
cf. http://www.kernel.org/doc/man-pages/online/pages/man5/locale.5.html
|
|
a640d79e
|
2012-05-09T13:11:50
|
|
indexer: close the pack's fd before renaming it
Windows gets upset if we rename a file with an open descriptor.
|
|
0f49200c
|
2012-05-09T04:37:02
|
|
msvc: Do not use `isspace`
Locale-aware bullshit bitting my ass again yo
|
|
e65752bb
|
2012-05-08T16:06:27
|
|
Merge pull request #677 from arrbee/status-without-head
Add support for diffing index with no HEAD
|
|
7e000ab2
|
2012-05-08T15:03:59
|
|
Add support for diffing index with no HEAD
When a repo is first created, there is no HEAD yet and attempting
to diff files in the index was showing nothing because a tree
iterator could not be constructed. This adds an "empty" iterator
and falls back on that when the head cannot be looked up.
|
|
fd5faae3
|
2012-05-08T23:55:37
|
|
message: Cleanup
|
|
b1e2ba27
|
2012-05-08T23:43:52
|
|
message: Proper OOM handling
|
|
c99bdacf
|
2012-05-08T14:13:43
|
|
Merge pull request #670 from nulltoken/ntk/topic/clean-commit_message
Clean commit and tag messages
|
|
364f51bd
|
2012-05-08T13:56:21
|
|
Merge pull request #668 from nulltoken/topic/binary-blobs
Enhancing the blob diffing experience
|
|
1f796cd1
|
2012-05-08T13:42:11
|
|
Merge pull request #676 from carlosmn/remotes
Add git_remote_add() and change signature for _new()
|
|
19579847
|
2012-05-08T13:23:00
|
|
Clean up warnings and tests
|
|
baaa8a44
|
2012-05-03T20:25:56
|
|
remotes: change git_remote_new's signature
Add a fetch refspec arguemnt and make the arguments (name, url,
refspec), as that order makes more sense.
|