Commit Graph

10496 Commits

Author SHA1 Message Date
Edward Thomson
5961face15 Merge pull request #3893 from pks-t/pks/remove-unused-test-cb
tests: blob: remove unused callback function
2016-08-09 08:07:10 -04:00
Patrick Steinhardt
4006455f01 tests: blob: remove unused callback function 2016-08-09 10:09:23 +02:00
Patrick Steinhardt
b989514405 stransport: do not use git_stream_free on uninitialized stransport
When failing to initialize a new stransport stream, we try to
release already allocated memory by calling out to
`git_stream_free`, which in turn called out to the stream's
`free` function pointer. As we only initialize the function
pointer later on, this leads to a `NULL` pointer exception.

Furthermore, plug another memory leak when failing to create the
SSL context.
2016-08-09 08:38:54 +02:00
Carlos Martín Nieto
97e57e8770 Merge pull request #3887 from libgit2/ethomson/empty_blob
odb: only provide the empty tree
2016-08-08 15:13:59 +02:00
Edward Thomson
b47e79e2cd Merge pull request #3890 from pks-t/pks/stransport-static-linkage
stransport: make internal functions static
2016-08-08 08:42:32 -04:00
Patrick Steinhardt
067bf5dcc5 stransport: make internal functions static 2016-08-08 13:49:17 +02:00
Carlos Martín Nieto
0fd5a44dde Merge pull request #3888 from libgit2/ethomson/doc_diff_from_buffer
diff: document `git_diff_from_buffer`
2016-08-08 13:12:51 +02:00
Edward Thomson
9bc8c80ffa odb: actually insert the empty blob in tests 2016-08-05 20:34:19 -04:00
Edward Thomson
e2e7f31ad0 diff: document git_diff_from_buffer 2016-08-05 20:01:52 -04:00
Edward Thomson
becadafca8 odb: only provide the empty tree
Only provide the empty tree internally, which matches git's behavior.
If we provide the empty blob then any users trying to write it with
libgit2 would omit it from actually landing in the odb, which appear
to git proper as a broken repository (missing that object).
2016-08-05 19:30:56 -04:00
Edward Thomson
56bbdf9349 Merge pull request #3886 from libgit2/cmn/copypeertrust-null
SecureTransport: handle NULL trust on success
2016-08-05 14:23:29 -04:00
Carlos Martín Nieto
9884dd613e SecureTransport: handle NULL trust on success
The `SSLCopyPeerTrust` call can succeed but fail to return a trust
object if it can't load the certificate chain and thus cannot check the
validity of a certificate. This can lead to us calling `CFRelease` on a
`NULL` trust object, causing a crash.

Handle this by returning ECERTIFICATE.
2016-08-05 18:40:37 +02:00
Carlos Martín Nieto
c550c92228 Merge pull request #3881 from pks-t/pks/fix-clar-suite-prefix-computation
clar: fix parsing of test suite prefixes
2016-08-05 18:24:28 +02:00
Edward Thomson
cba60b9b0e Merge pull request #3884 from pks-t/pks/patch-image-initialization
Patch image initialization
2016-08-05 09:10:58 -04:00
Patrick Steinhardt
274a727e0b apply: fix warning when initializing patch images 2016-08-05 10:57:42 +02:00
Patrick Steinhardt
844f5b2062 pool: provide macro to statically initialize git_pool 2016-08-05 10:57:13 +02:00
Edward Thomson
73dab7692e Merge pull request #3861 from libgit2/ethomson/refresh_objects
odb: freshen existing objects when writing
2016-08-04 16:16:16 -04:00
Edward Thomson
27051d4e31 odb: only freshen pack files every 2 seconds
Since writing multiple objects may all already exist in a single
packfile, avoid freshening that packfile repeatedly in a tight loop.
Instead, only freshen pack files every 2 seconds.
2016-08-04 15:12:04 -04:00
Edward Thomson
8f09a98e18 odb: freshen existing objects when writing
When writing an object, we calculate its OID and see if it exists in the
object database.  If it does, we need to freshen the file that contains
it.
2016-08-04 15:12:04 -04:00
Carlos Martín Nieto
d2794b0e37 Merge pull request #3877 from libgit2/ethomson/paths_init
sysdir: don't assume an empty dir is uninitialized
2016-08-04 20:49:50 +02:00
Edward Thomson
0d84de0208 Merge pull request #3869 from richardipsum/fix-outdated-comment
Fix outdated comment
2016-08-04 13:20:49 -04:00
Edward Thomson
78b500bf59 Merge pull request #3850 from wildart/custom-tls
Enable https transport for custom TLS streams
2016-08-04 12:45:19 -04:00
Edward Thomson
031d34b7e8 sysdir: use the standard init pattern
Don't try to determine when sysdirs are uninitialized.  Instead, simply
initialize them all at `git_libgit2_init` time and never try to
reinitialize, except when consumers explicitly call `git_sysdir_set`.

Looking at the buffer length is especially problematic, since there may
no appropriate path for that value.  (For example, the Windows-specific
programdata directory has no value on non-Windows machines.)

Previously we would continually trying to re-lookup these values,
which could get racy if two different threads are each calling
`git_sysdir_get` and trying to lookup / clear the value simultaneously.
2016-08-04 12:26:06 -04:00
Edward Thomson
da7f9feb5c Merge pull request #3879 from libgit2/ethomson/mwindow_init
mwindow: init mwindow files in git_libgit2_init
2016-08-04 11:51:06 -04:00
Edward Thomson
2381d9e490 mwindow: init mwindow files in git_libgit2_init 2016-08-04 10:30:48 -04:00
Patrick Steinhardt
1eee631d11 refspec: do not set empty rhs for fetch refspecs
According to git-fetch(1), "[t]he colon can be omitted when <dst>
is empty." So according to git, the refspec "refs/heads/master"
is the same as the refspec "refs/heads/master:" when fetching
changes. When trying to fetch from a remote with a trailing
colon with libgit2, though, the fetch actually fails while it
works when the trailing colon is left out. So obviously, libgit2
does _not_ treat these two refspec formats the same for fetches.

The problem results from parsing refspecs, where the resulting
refspec has its destination set to an empty string in the case of
a trailing colon and to a `NULL` pointer in the case of no
trailing colon. When passing this to our DWIM machinery, the
empty string gets translated to "refs/heads/", which is simply
wrong.

Fix the problem by having the parsing machinery treat both cases
the same for fetch refspecs.
2016-08-04 13:54:19 +02:00
Patrick Steinhardt
f2cab0a6fa clar: fix parsing of test suite prefixes
When passing in a specific suite which should be executed by clar
via `-stest::suite`, we try to parse this string and then include
all tests contained in this suite. This also includes all tests
in sub-suites, e.g. 'test::suite::foo'.

In the case where multiple suites start with the same _string_,
for example 'test::foo' and 'test::foobar', we fail to
distinguish this correctly. When passing in `-stest::foobar`,
we wrongly determine that 'test::foo' is a prefix and try to
execute all of its matching functions. But as no function
will now match 'test::foobar', we simply execute nothing.

To fix this, we instead have to check if the prefix is an actual
suite prefix as opposed to a simple string prefix. We do so by by
inspecting if the first two characters trailing the prefix are
our suite delimiters '::', and only consider the filter as
matching in this case.
2016-08-04 11:49:39 +02:00
Edward Thomson
baa87dfc50 Merge pull request #3880 from libgit2/ethomson/diff_file
git_diff_file: move `id_abbrev`
2016-08-03 22:00:21 -04:00
Edward Thomson
002c8e29a1 git_diff_file: move id_abbrev
Move `id_abbrev` to a more reasonable place where it packs more nicely
(before anybody starts using it).
2016-08-03 17:57:37 -04:00
Edward Thomson
152efee20b Merge pull request #3865 from libgit2/ethomson/leaks
Fix leaks, some warnings and an error
2016-08-02 18:43:12 -04:00
Edward Thomson
df87648ab8 crlf: set a safe crlf default 2016-07-24 16:10:30 -04:00
Edward Thomson
a37624ecc7 Merge pull request #3815 from pks-t/pks/coverity-model
Coverity user model
2016-07-24 16:05:17 -04:00
Edward Thomson
76cfdd4612 Merge pull request #3862 from novalis/dturner/do-not-die-on-missing-config
remote: Handle missing config values when deleting a remote
2016-07-24 15:51:13 -04:00
Edward Thomson
b118f6479d repository: don't cast to int for no reason
And give it a default so that some compilers don't (unnecessarily)
complain.
2016-07-24 15:49:19 -04:00
Edward Thomson
4aaae9354c index: cast to avoid warning 2016-07-24 15:49:19 -04:00
Edward Thomson
498d0801a1 tests: use a size_t 2016-07-24 15:49:19 -04:00
Edward Thomson
60e15ecd55 packbuilder: size_t all the things
After 1cd65991, we were passing a pointer to an `unsigned long` to
a function that now expected a pointer to a `size_t`.  These types
differ on 64-bit Windows, which means that we trash the stack.

Use `size_t`s in the packbuilder to avoid this.
2016-07-24 15:49:19 -04:00
Edward Thomson
581a4d3942 apply: safety check files that dont end with eol 2016-07-24 15:49:19 -04:00
Edward Thomson
c065f6a1d2 apply: check allocation properly 2016-07-24 15:49:19 -04:00
Edward Thomson
531be3e8c6 apply: compare preimage to image
Compare the preimage to the image; don't compare the preimage to itself.
2016-07-24 15:49:19 -04:00
Edward Thomson
e02f567641 repo::open: remove dead code, free buffers 2016-07-24 15:49:19 -04:00
Edward Thomson
378d12ac85 Merge pull request #3868 from libgit2/ethomson/mac_build
ci: point to the homebrew libssh2 install
2016-07-24 15:47:58 -04:00
Edward Thomson
0239eff354 ci: install homebrew's curl on mac 2016-07-24 14:54:40 -04:00
Richard Ipsum
8b2ad593a8 Make comment conform to style guide
Style guide says // style comments should be avoided.
2016-07-23 11:55:43 +01:00
Richard Ipsum
877282ea6f Fix outdated comment
SSH transport seems to be supported now.
2016-07-23 11:47:59 +01:00
Edward Thomson
08556e6db3 ci: install homebrew's zlib on mac 2016-07-22 21:10:25 -04:00
David Turner
d81cb2e405 remote: Handle missing config values when deleting a remote
Somehow I ended up with the following in my ~/.gitconfig:
[branch "master"]
remote = origin
merge = master
rebase = true

I assume something went crazy while I was running the git.git tests
some time ago, and that I never noticed until now.

This is not a good configuration, but it shouldn't cause problems. But
it does. Specifically, if you have this in your config, and you
perform the following set of actions:

create a remote
fetch from that remote
create a branch off of the remote master branch called "master"
delete the branch
delete the remote

The remote delete fails with the message "Could not find key
'branch.master.rebase' to delete". This is because it's iterating over
the config entries (including the ones in the global config) and
believes that there is a master branch which must therefore have these
config keys.

https://github.com/libgit2/libgit2/issues/3856
2016-07-15 13:47:01 -04:00
wildart
bdec62dce1 remove conditions that prevent use of custom TLS stream 2016-07-06 13:06:25 -04:00
Edward Thomson
c18a2bc4e0 Merge pull request #3851 from txdv/get-user-agent
Add get user agent functionality.
2016-07-05 15:51:01 -04:00
Edward Thomson
b57c176aa9 Merge pull request #3846 from rkrp/fix_bug_parsing_int64min
Fixed bug while parsing INT64_MIN
2016-07-05 12:46:27 -04:00