Commit Graph

433 Commits

Author SHA1 Message Date
Vicent Martí
ac5e507cec Merge pull request #1918 from libgit2/cmn/indexer-naming
indexer: remove the stream infix
2013-11-01 09:31:52 -07:00
Ben Straub
048f837b2f Prevent another segfault from bad URL 2013-10-31 13:30:22 -07:00
Ben Straub
29b77446b7 Initialize variables 2013-10-30 15:38:52 -07:00
Carlos Martín Nieto
2f8c481cc0 protocol: basic support for multi_ack_detailed
This tells the server that we speak it, but we don't make use of its
extra information to determine if there's a better place to stop
negotiating.

In a somewhat-related change, reorder the capabilities so we ask for
them in the same order as git does.

Also take this opportunity to factor out a fairly-indented portion of
the negotiation logic.
2013-10-30 16:20:42 +01:00
Carlos Martín Nieto
a6154f2183 indexer: remove the stream infix
It was there to keep it apart from the one which read in from a file on
disk. This other indexer does not exist anymore, so there is no need for
anything other than git_indexer to refer to it.

While here, rename _add() function to _append() and _finalize() to
_commit(). The former change is cosmetic, while the latter avoids
talking about "finalizing", which OO languages use to mean something
completely different.
2013-10-30 15:00:05 +01:00
Vicent Martí
5c50f22a93 Merge pull request #1891 from libgit2/cmn/fix-thin-packs
Add support for thin packs
2013-10-28 09:25:44 -07:00
Vicent Martí
5565f3cda8 Merge pull request #1904 from libgit2/cmn/ssh-naming
Rename the ssh credentials
2013-10-28 07:04:58 -07:00
Edward Thomson
df9fc82e97 Use two calls to set two headers 2013-10-25 13:33:42 -04:00
Carlos Martín Nieto
5cb136705d transport: let the progress output return an error
There are any number of issues that can come up in the progress
callback, and we should let the user cancel at that point as well.
2013-10-23 15:45:29 +02:00
Carlos Martín Nieto
70a8c78f36 Rename the ssh credentials
The names from libssh2 are somewhat obtuse for us. We can simplify the
usual key/passphrase credential's name, as well as make clearer what the
custom signature function is.
2013-10-23 12:08:54 +02:00
Edward Thomson
2648dc1a06 Allowed credential types should be a bitfield 2013-10-21 14:02:36 -05:00
Ben Straub
3dc3c723da Combine WinHTTP API calls 2013-10-08 15:52:37 -07:00
Ben Straub
a58eecd436 WinHTTP: set Accept header for POSTs 2013-10-08 13:40:52 -07:00
Carlos Martín Nieto
b4342b116d net: advertise our support for fixing thin packs 2013-10-04 15:26:43 +02:00
Jameson Miller
7baa7631ea Style tweaks and changes for code review feedback 2013-10-03 09:51:21 -04:00
Jameson Miller
5b18822545 Support cancellation in push operation
This commit adds cancellation for the push operation. This work consists of:

1) Support cancellation during push operation
    - During object counting phase
    - During network transfer phase
        - Propagate GIT_EUSER error code out to caller
2) Improve cancellation support during fetch
    - Handle cancellation request during network transfer phase
    - Clear error string when cancelled during indexing
3) Fix error handling in git_smart__download_pack

Cancellation during push is still only handled in the pack building and
network transfer stages of push (and not during packbuilding).
2013-10-02 15:12:44 -04:00
Carlos Martín Nieto
e3c131c544 remote: move the credentials callback to the struct
Move this one as well, letting us have a single way of setting the
callbacks for the remote, and removing fields from the clone options.
2013-10-02 06:41:42 +02:00
Vicent Martí
fba147631e Merge pull request #1879 from libgit2/redir-refactor
Redir refactor
2013-09-30 15:03:35 -07:00
Jameson Miller
b176ededb7 Initial Implementation of progress reports during push
This adds the basics of progress reporting during push. While progress
for all aspects of a push operation are not reported with this change,
it lays the foundation to add these later. Push progress reporting
can be improved in the future - and consumers of the API should
just get more accurate information at that point.

The main areas where this is lacking are:

1) packbuilding progress: does not report progress during deltafication,
   as this involves coordinating progress from multiple threads.

2) network progress: reports progress as objects and bytes are going
   to be written to the subtransport (instead of as client gets
   confirmation that they have been received by the server) and leaves
   out some of the bytes that are transfered as part of the push protocol.
   Basically, this reports the pack bytes that are written to the
   subtransport. It does not report the bytes sent on the wire that
   are received by the server. This should be a good estimate of
   progress (and an improvement over no progress).
2013-09-30 13:22:28 -04:00
Ben Straub
256961e45d WHOOPS 2013-09-26 16:36:05 -07:00
Ben Straub
1b02baf40b Adjust to new utility signature 2013-09-26 16:25:05 -07:00
Ben Straub
ea59f65977 Deploy gitno_connection_data into transport (winhttp)
...and have that call manage replaced memory in the output structure.
2013-09-26 16:20:30 -07:00
Ben Straub
83fbd36869 Deploy gitno_connection_data into transport 2013-09-26 15:58:41 -07:00
Ben Straub
f30d91ce48 Refactor URL handling to use library call 2013-09-26 11:03:27 -07:00
Ben Straub
8988688c47 Migrate redirect URL handling to common utility 2013-09-25 20:41:56 -07:00
Ben Straub
ac316e7438 Why are we disabling redirects? 2013-09-25 14:25:38 -07:00
Ben Straub
4a88eb20b9 Win32: handle http->https redirects 2013-09-25 12:13:09 -07:00
Russell Belfer
46fbc88ee5 Prevent HTTPS to HTTP redirect 2013-09-24 14:50:06 -07:00
Russell Belfer
eb0ff13071 Disconnect path string to preserve after redirect
The subtransport path was relying on pointing to data owned by
the remote which meant that after a redirect, the updated path
was getting lost for future requests.  This updates the http
transport to strdup the path and maintain its own lifetime.

This also pulls responsibility for parsing the URL back into the
http transport and isolates the functions that parse and free that
connection data so that they can be reused between the initial
parsing and the redirect parsing.
2013-09-24 14:07:08 -07:00
Ben Straub
210d532526 Allow redirects to use same host 2013-09-24 11:18:36 -07:00
Vicent Martí
92d19d1671 Merge pull request #1840 from linquize/warning
Fix warning
2013-09-21 09:34:03 -07:00
Linquize
66566516ce Fix warning 2013-09-19 23:14:06 +08:00
Etienne Samson
eec4dcc34b Whitespace. 2013-09-16 23:07:22 +02:00
Etienne Samson
b622aabec0 Add a wrapper to provide the libssh2 error message 2013-09-16 23:07:19 +02:00
Isaac Kearse
b345026baa Test for repo before removing leading colon 2013-09-10 05:16:52 +12:00
Isaac Kearse
fbabe855ad Trim leading colon from ssh repository path 2013-09-08 14:11:08 +12:00
Ben Straub
f42d546c63 Provide better errors for push on non-bare local remotes 2013-09-04 13:07:42 -07:00
Edward Thomson
1ff3a09415 Improve win32 version check, no ipv6 tests on XP 2013-08-27 19:44:35 -05:00
Vicent Martí
520287f63a Merge pull request #1785 from libgit2/cmn/odb-hash-frontend
odb: move hashing to the frontend for streaming
2013-08-19 02:17:00 -07:00
Carlos Martín Nieto
376e6c9f96 odb: wrap the stream reading and writing functions
This is in preparation for moving the hashing to the frontend, which
requires us to handle the incoming data before passing it to the
backend's stream.
2013-08-15 14:29:27 +02:00
Russell Belfer
c87bf86cd7 Commit 7affc2f7 removed var initialization
That commit accidentally removed the initialization of the "start"
variable giving undefined results for the host extraction from the
url input.
2013-08-14 10:58:02 -07:00
Vicent Martí
40948998ba Merge pull request #1767 from libgit2/win32-bigger-utf8-buffer
Bigger buffer for utf-8 parsing in win32
2013-08-13 11:36:24 -07:00
Russell Belfer
d4cff0cb1c Rename git__win32_path fns to git_win32_path 2013-08-13 09:40:32 -07:00
Vicent Marti
abf3732728 windows: Path conversion with better semantics 2013-08-13 09:15:39 +02:00
Carlos Martín Nieto
7affc2f7de Include username in each credential type
Key-based authentication also needs an username, so include it in each
one.

Also stop assuming a default username of "git" in the ssh transport
which has no business making such a decision.
2013-08-12 12:07:21 +02:00
Ben Straub
aaefbdeea2 Discriminate path-specific and general UTF-X conversions 2013-08-08 08:48:57 -07:00
Ben Straub
2c0128ee79 Rename git_win_str_utf* to git_win32_path_utf* 2013-08-07 19:29:33 -07:00
Ben Straub
9c38f7a652 Add typedefs for win32 utf-8 and utf-16 buffers
...and normalize the signatures of the two conversion functions.
2013-08-07 13:22:41 -07:00
Ben Straub
d85636190f Split UTF-16 and UTF-8 buffer sizes for win32
Also fixed up call-sites to use the correct buffer sizes, especially
when converting to utf-8.
2013-08-05 11:41:39 -07:00
Russell Belfer
33c8c6f0b8 trivial whitespace fixup 2013-07-10 10:48:32 -07:00
Russell Belfer
c2de6b1adf Bring SSH error reporting up to base standards
The SSH error checking and reporting could still be further
improved by using the libssh2 native methods to get error info,
but at least this ensures that all error codes are checked and
translated into libgit2 error messages.
2013-07-10 10:21:24 -07:00
Russell Belfer
68bc49a158 Merge branch 'ssh-cred-fix' of tiennou/libgit2
Conflicts:
	src/transports/ssh.c
2013-07-10 09:20:46 -07:00
Etienne Samson
08bf80fa2b Tab indent. 2013-07-10 09:42:28 +02:00
Etienne Samson
367c1903e9 Add some missing error messages. 2013-07-10 09:33:14 +02:00
Russell Belfer
a4456929a8 Make credential clearing consistent
This makes all of the credential objects use the same pattern to
clear the contents and call git__memzero when done.  Much of this
information is probably not sensitive, but it also seems better
to just clear consistently.
2013-07-09 16:16:24 -07:00
Russell Belfer
03d9b930ee Indent with tabs 2013-07-09 14:45:58 -07:00
Russell Belfer
5813bc2194 Lots of SSH credential stuff can be left on
Much of the SSH credential creation API can be left enabled even
on platforms with no SSH support.  We really just have to give an
error when you attempt to open the SSH connection.
2013-07-09 12:01:16 -07:00
Russell Belfer
a3c062dbf8 Make SSH APIs present even without SSH support
The SSH APIs will just return an error code and state that the
library was built without SSH support if they are called in
that case.
2013-07-09 09:58:33 -07:00
Etienne Samson
f6bd086335 Fix a probable leak. 2013-07-03 22:10:05 +02:00
Etienne Samson
219f318c05 Fix a crash if git_remote_set_cred_acquire_cb wasn't called before connecting.
Fixes #1700.
2013-07-03 22:10:05 +02:00
Arthur Schreiber
9728cfde5f Make sure we don't leak memory again. 2013-06-25 11:17:55 +03:00
Arthur Schreiber
edbaa63a7c Unbreak git_remote_ls on a local transport after disconnecting. 2013-06-25 09:04:04 +02:00
Arthur Schreiber
8c510b8313 Fix a leak in the local transport code. 2013-06-24 21:02:42 +02:00
yorah
0525fb7ef3 cred: deploy git__memzero to clear memory holding a password 2013-06-17 15:42:34 +02:00
Russell Belfer
37f66e8263 Fix Windows warnings
This fixes problems with missing function prototypes and 64-bit
data issues on Windows.
2013-06-12 15:21:21 -07:00
Vicent Martí
e3107e0ee1 Merge pull request #1558 from bmorganpa/ssh_transport
SSH Transport
2013-05-16 11:35:02 -07:00
Linquize
7026ad893b calloc() to initialize memory 2013-05-16 21:11:38 +08:00
nulltoken
1fed6b07f0 Fix trailing whitespaces 2013-05-15 22:41:30 +02:00
Brad Morgan
84ac625ddd Added GITERR_CHECK_ALLOC 2013-05-15 12:51:40 -04:00
Brad Morgan
ccaee222a1 Added GITERR_CHECK_ALLOC 2013-05-15 12:46:33 -04:00
Brad Morgan
e057e41122 Reworked git_cred_ssh_keyfile_passphrase_new method 2013-05-15 12:44:51 -04:00
Brad Morgan
b54ed3efe8 Added error check 2013-05-15 12:41:16 -04:00
Brad Morgan
22011b33da Cleanup 2013-05-15 12:38:40 -04:00
Linquize
0cb16fe924 Unify whitespaces to tabs 2013-05-15 20:26:55 +08:00
Linquize
e583334c00 Fix broken build when MSVC SDL checks is enabled 2013-05-11 20:13:26 +08:00
Carlos Martín Nieto
2b562c3a1e refs: remove the OID/SYMBOLIC filtering
Nobody should ever be using anything other than ALL at this level, so
remove the option altogether.

As part of this, git_reference_foreach_glob is now implemented in the
frontend using an iterator. Backends will later regain the ability of
doing the glob filtering in the backend.
2013-05-11 11:20:38 +02:00
Brad Morgan
ce6d50b994 Changed to use libssh2_channel_exec 2013-05-09 17:37:42 -04:00
Brad Morgan
05f581311b Renaming 2013-05-09 17:36:27 -04:00
Brad Morgan
00e43380a0 Merge remote-tracking branch 'origin/development' into ssh_transport 2013-05-07 14:30:35 -04:00
Brad Morgan
574b86b722 Fixed compilation issues when libssh2 is missing 2013-05-07 13:56:34 -04:00
Brad Morgan
c36565c0ee Added SSH public key authentication 2013-05-07 13:45:31 -04:00
Brad Morgan
7621519f73 Cleanup 2013-05-05 14:46:28 -04:00
Brad Morgan
67a7136c7b Renaming 2013-05-05 14:24:47 -04:00
Brad Morgan
3eed595e85 Refactoring 2013-05-05 14:24:05 -04:00
Brad Morgan
d97669593a Cleanup 2013-05-05 14:05:03 -04:00
Brad Morgan
c0cef9e0d6 Added username and password auth for ssh 2013-05-05 13:58:18 -04:00
Brad Morgan
7261d9837e Added support for ssh:// urls 2013-05-05 13:36:11 -04:00
Brad Morgan
120b0122c5 Refactoring 2013-05-05 09:03:49 -04:00
Brad Morgan
22595b8480 Added ssh stream cleanup 2013-05-05 08:43:58 -04:00
Brad Morgan
58ba0a4eba Cleanup 2013-05-05 08:34:56 -04:00
Brad Morgan
f7158cd79b Push working over ssh 2013-05-04 11:28:20 -04:00
Brad Morgan
d04c384036 Adding ssh transport logic 2013-05-03 14:53:23 -04:00
Brad Morgan
8ae55d940f Renaming 2013-05-03 10:53:59 -04:00
Brad Morgan
297758dce3 Added ssh transport file 2013-05-03 10:37:33 -04:00
Edward Thomson
d80416384f fix some leaks 2013-05-02 20:43:45 -05:00
Russell Belfer
b7f167da29 Make git_oid_cmp public and add git_oid__cmp 2013-04-29 13:52:12 -07:00
Carlos Martín Nieto
51e4da6d8a push: don't send a packfile when only issuing delete commands
For update and create commands where all the objects are known to
exist in the remote, we must send an empty packfile. However, if all
we issue are delete commands, no packfile must be sent.

Take this into consideration for push.
2013-04-29 01:49:40 +02:00
Russell Belfer
83cc70d9fe Move odb_backend implementors stuff into git2/sys
This moves some of the odb_backend stuff that is related to the
internals of an odb_backend implementation into include/git2/sys.

Some of the stuff related to streaming I left in include/git2
because it seemed like it would be reasonably needed by a normal
user who wanted to stream objects into and out of the ODB.

Also, I added APIs for traversing the list of backends so that
some of the tests would not need to access ODB internals.
2013-04-21 11:50:55 -07:00
Carlos Martín Nieto
67ba7d2031 Allow git_remote_ls after disconnecting from the remote
Keep the data around until free, as expected by our own fetch example
2013-04-15 23:22:32 +02:00
Philip Kelley
5c5eeba6fd Add git_has_win32_version helper 2013-03-31 22:22:33 -04:00
Philip Kelley
0227fa2a35 Avoid pre-Win7 WinHTTP self-redirect quirk 2013-03-30 21:36:04 -04:00
Philip Kelley
35e0f3c629 Refine the redirect check condition 2013-03-25 17:59:30 -04:00
Philip Kelley
2c7f7a66e9 http: Support 302 Found (arrbee did most of the work) 2013-03-25 17:35:36 -04:00
Arkadiy Shapkin
10c06114cb Several warnings detected by static code analyzer fixed
Implicit type conversion argument of function to size_t type
Suspicious sequence of types castings: size_t -> int -> size_t
Consider reviewing the expression of the 'A = B == C' kind. The expression is calculated as following: 'A = (B == C)'
Unsigned type is never < 0
2013-03-18 03:30:26 +04:00
Russell Belfer
55e0f53d86 Fix various build warnings
This fixes various build warnings on Mac and Windows (64-bit).
2013-03-14 15:09:29 -07:00
Philip Kelley
f58983246d Style: Reverse lhs and rhs of == comparisons 2013-03-12 15:31:14 -04:00
Philip Kelley
b8c325806f Advertise and support side-band-64k when calling receive-pack 2013-03-12 15:19:32 -04:00
abepern
20858f6ea6 Implemented push on the local transport 2013-03-11 17:32:33 -04:00
Russell Belfer
56543a609a Clear up warnings from cppcheck
The cppcheck static analyzer generates warnings for a bunch of
places in the libgit2 code base.  All the ones fixed in this
commit are actually false positives, but I've reorganized the
code to hopefully make it easier for static analysis tools to
correctly understand the structure.  I wouldn't do this if I
felt like it was making the code harder to read or worse for
humans, but in this case, these fixes don't seem too bad and will
hopefully make it easier for better analysis tools to get at any
real issues.
2013-02-15 16:02:45 -08:00
Ben Straub
a9e1339c06 Fix a leak when canceling a network operation 2013-02-14 08:12:55 -08:00
Russell Belfer
9c258af094 Merge pull request #1316 from ben/clone-cancel
Allow network operations to cancel
2013-02-12 10:13:56 -08:00
Philip Kelley
a150cc875d Fix a bug introduced in df93a681 'Merge the push...' 2013-02-10 18:16:10 -05:00
Michael Schubert
a9d081e504 Fix -Wmaybe-uninitialized warning 2013-02-10 19:36:39 +01:00
Philip Kelley
df93a6810a Merge the push report into the refs to avoid a 3rd network call 2013-02-08 15:21:37 -05:00
Ben Straub
ea57f66b57 Expect standard error code from internal calls 2013-02-06 11:02:29 -08:00
Ben Straub
def60ea473 Allow all non-zero returns to cancel transfers 2013-02-05 13:14:48 -08:00
Ben Straub
fe95ac1b67 Allow progress callback to cancel fetch
This works by having the indexer watch the return
code of the callback, so will only take effect
on object boundaries.
2013-02-05 10:59:58 -08:00
Ben Straub
630146bd1b Address feedback 2013-02-04 13:52:18 -08:00
Ben Straub
8c36a3cdba Remove double-free segfaults 2013-01-31 15:24:59 -08:00
Ben Straub
016179d668 WinHttp: use cred in url if provided 2013-01-31 14:54:58 -08:00
Ben Straub
54ffc1f773 HTTP: use creds in url if available 2013-01-31 14:41:01 -08:00
Ben Straub
cf7038a65c Enhance url parsing to include passwords 2013-01-31 14:04:21 -08:00
Ben Straub
7602cb7c0e Add user-from-url param to auth callback 2013-01-31 10:44:57 -08:00
Ben Straub
2234b2b031 Stash username from url (but don't use it yet) 2013-01-30 19:03:58 -08:00
Frank Li
88183c1988 Fix fail clone local repository because can't found object
avoid use object which is already free

Signed-off-by: Frank Li <lznuaa@gmail.com>
2013-01-27 13:36:37 +08:00
Philip Kelley
47fc264203 Fix gen_pktline format specifier for Win32 2013-01-22 09:25:15 -05:00
Philip Kelley
77844988b8 Fix really bad error handling in git_smart__negotiate_fetch 2013-01-18 14:51:46 -05:00
nulltoken
090d5e1fda Fix MSVC compilation warnings 2013-01-11 19:30:59 +01:00
Ben Straub
520dcc1c00 Move credential helpers to their own (optional) header 2013-01-09 13:31:17 -08:00
Ben Straub
ffb02b1630 Expose stock user/pass credential utility 2013-01-09 13:31:17 -08:00
Edward Thomson
359fc2d241 update copyrights 2013-01-08 17:31:27 -06:00
Maxwell Swadling
79ff264e2f Fixed size_t format string warning 2013-01-05 11:34:19 +11:00
Congyi Wu
4128f5aa31 Fix bug in gen_pktline() for deletes of missing remote refs
* gen_pktline() in smart_protocol.c was skipping refspecs that deleted
  refs that were not advertised by the server.  The new behavior is to
  send a delete command with an old-id of zero, which matches the behavior
  of the official git client.
* Update test_network_push__delete() in reaction to above fix.
* Obviate messy logic that handles missing push_spec rrefs by canonicalizing
  push_spec.  After calculate_work(), loid, roid, and rref, are filled in with
  exactly what is sent to the server
2013-01-03 17:19:55 -05:00
Ben Straub
2a2d1ab086 Cloning empty repos: only allow missing target for HEAD 2012-12-15 14:30:20 -08:00
Ben Straub
b524fe1a3c Local Only ignore ENOTFOUNDs when adding corrupted refs 2012-12-14 13:58:44 -08:00
Ben Straub
850b1edfe8 Allow clone to handle empty repos 2012-12-14 13:58:44 -08:00
Ben Straub
4cbe9a1be1 Add git_cred_acquire_cb payload to winhttp transport 2012-12-10 11:48:20 -08:00
Ben Straub
59bccf33c4 Add a payload param to git_cred_acquire_cb
Fixes #1128.
2012-12-10 11:11:01 -08:00
Ben Straub
1071176900 Deploy versioned git_transport structure 2012-11-30 13:12:15 -08:00
Philip Kelley
4a6621fdf7 Leverage the min macro from util.h 2012-11-29 08:35:21 -05:00
Philip Kelley
6762fe087b Remove casts of return values of type void * 2012-11-29 08:29:26 -05:00
Philip Kelley
613d5eb939 Push! By schu, phkelley, and congyiwu, et al 2012-11-28 11:42:37 -05:00
Ben Straub
df705148ec API updates for remote.h
Includes typedef for git_direction, and renames for
GIT_DIR_[FETCH|PUSH] to GIT_DIRECTION_(\1).
2012-11-27 13:19:49 -08:00
Russell Belfer
a8122b5d4a Fix warnings on Win64 build 2012-11-27 13:18:29 -08:00
Vicent Marti
cfbe4be3fb More external API cleanup
Conflicts:
	src/branch.c
	tests-clar/refs/branches/create.c
2012-11-27 13:18:27 -08:00
Ben Straub
2508cc66eb Rename ref and reflog apis for consistency 2012-11-27 13:17:45 -08:00
Carlos Martín Nieto
7e9f5e6500 Slightly different valgrind fix
Allocate with calloc rather than conditionally memsetting a specific
part of the struct later on.
2012-11-13 20:06:15 -08:00
Carlos Martín Nieto
6132a54e0b Fix a few valgrind errors 2012-11-13 16:17:37 -08:00
Vicent Marti
f6c18dda04 http: Unrustle 2012-11-13 14:17:41 -08:00
Vicent Martí
aa1c3b588e Merge pull request #1016 from arrbee/fix-checkout-dir-removal
Update checkout with new strategies & behavior
2012-11-13 14:13:47 -08:00
Ben Straub
e45423dd2c Merge pull request #1065 from nulltoken/fix/memory-leak
Fix memory leaks
2012-11-13 05:45:08 -08:00
Michael Schubert
d51e54f1f4 Remove unused variables 2012-11-13 14:28:44 +01:00
nulltoken
3dee36557e local: fix memory leak 2012-11-13 07:04:30 +01:00
Vicent Marti
19c044a17d Merge remote-tracking branch 'ben/local-transport' into development 2012-11-12 14:23:17 -08:00
Ben Straub
14157652ee Remove unnecessary progress logic
The indexer handles this better than the fetch
logic does.
2012-11-12 07:57:03 -08:00
Ben Straub
0f5520f73a Fix error check 2012-11-12 07:55:09 -08:00
Russell Belfer
757b406504 Fix warnings and valgrind issues
This fixes some various warnings that showed up in Travis and
a couple uses of uninitialized memory and one memory leak.
2012-11-09 14:01:44 -08:00
Philip Kelley
2f683f0097 Fix uninitialized memory in winhttp subtransport on 64-bit 2012-11-09 15:39:25 -05:00
Ben Straub
90207709a3 Avoid copying duplicate commits 2012-11-09 10:33:16 -08:00
Ben Straub
505da062b8 Implement local transport's fetch 2012-11-09 10:33:05 -08:00
Philip Kelley
9d64128325 Merge pull request #1048 from pwkelley/basic_auth
Basic authentication for http and winhttp
2012-11-08 08:06:23 -08:00
Philip Kelley
11fa847283 Don't store no_check_cert; fetch it on demand 2012-11-06 11:27:23 -05:00
Philip Kelley
2f7538ec00 Fix connection leak in http subtransport 2012-11-06 09:36:04 -05:00
Philip Kelley
091361f569 Basic authentication for http and winhttp 2012-11-06 08:52:03 -05:00
Edward Thomson
09cc0b92dc create callback to handle packs from fetch, move the indexer to odb_pack 2012-11-05 16:00:29 -06:00
Philip Kelley
438906e160 Fix bytes_received in fetch tests - we weren't calling the callback 2012-11-02 14:34:06 -04:00
Philip Kelley
ff830366ea Http: Set an error for invalid content-type 2012-11-01 12:07:42 -04:00
Philip Kelley
0ccfc63bd6 Improve consistency of WinHTTP request headers 2012-11-01 10:29:30 -04:00
Philip Kelley
41fb1ca0ec Reorganize transport architecture (squashed 3) 2012-11-01 09:02:33 -04:00
Ben Straub
a0ce87c51c Add network transfer callbacks on Windows 2012-10-26 13:43:13 -07:00
Ben Straub
7bcd9e23e8 gitno_buffer: callback on each packet
The fetch code takes advantage of this to implement a
progress callback every 100kb of transfer.
2012-10-19 19:36:23 -07:00
nulltoken
68206c54bf test: fix some memory leaks 2012-10-15 20:41:43 +02:00
Carlos Martín Nieto
aeba5e175a http: don't discard the HEAD ref
The fix for fetching from empty repositories (22935b06d protocol:
don't store flushes; 2012-10-07) forgot to take into account the
deletion of the flush pkt in the HTTP transport. As a result, the HEAD
ref advertisement where we detect the remote's capabilities was
deleted instead. Fix this.
2012-10-10 23:59:16 +02:00
nulltoken
9ac8b113b1 Fix MSVC amd64 compilation warnings 2012-09-20 14:10:05 +02:00
Carlos Martín Nieto
687ec68be4 http: use the new unicode functions
The winhttp branch was based on a version before these existed, so the
build broke on Windows.
2012-09-14 00:51:29 +02:00
Carlos Martín Nieto
3ce22c7485 http: use WinHTTP on Windows
Wondows has its own HTTP library. Use that one when possible instead of
our own.

As we don't depend on them anymore, remove the http-parser library from
the Windows build, as well as the search for OpenSSL.
2012-09-14 02:13:30 +02:00
Carlos Martín Nieto
cc1d85d1da http: increase buffer side to deal with side-band-64k
This poor transport was forgotten in the recent sideband support.
2012-08-25 23:32:19 +02:00
Carlos Martín Nieto
e03e71da56 network: add sideband support
This lets us notify the user of what the remote end is doing while we
wait for it to start sending us the packfile.
2012-08-24 20:29:39 +02:00
Russell Belfer
e9ca852e4d Fix warnings and merge issues on Win64 2012-08-23 09:20:17 -07:00
Carlos Martín Nieto
0048372a9a transport: rename encrypt to use_ssl
SSL isn't the only way that a transport can be encrypted. The new name
will make it easier to merge the SSH support.
2012-07-30 20:28:16 +02:00
Carlos Martín Nieto
ad4b5beb50 transport: store the refs in a common area
Instad of each transport having its own function and logic to get to
its refs, store them directly in transport.

Leverage the new gitno_buffer to make the parsing and storing of the
refs use common code and get rid of the git_protocol struct.
2012-07-30 20:28:16 +02:00
Carlos Martín Nieto
b49c8f71ae remote: use the same code to control git and http
This allows us to add capabilitites to both at the same time, keeps
them in sync and removes a lot of code.

gitno_buffer now uses a callback to fill its buffer, allowing us to
use the same interface for git and http (which uses callbacks).
2012-07-30 20:28:16 +02:00
Carlos Martín Nieto
114dc6e14c network: implement multi_ack for the git transport 2012-07-30 20:28:16 +02:00
Carlos Martín Nieto
64d01de8a7 remote: start moving the protocol to a common area
For the transition, http is going to keep its own logic until the
git/common code catches up with the implied multi_ack that http
has. This also has the side-effect of making the code cleaner and more
correct regardingt he protocol.
2012-07-30 20:25:10 +02:00
Carlos Martín Nieto
371599576a indexer: don't use '/objects/pack/' unconditionally
Not everyone who indexes a packfile wants to put it in the standard
git repository location.
2012-06-28 10:24:03 +02:00
Michael Schubert
fdc5c38e40 transports: fix buglet 2012-06-05 23:03:06 +02:00
Vicent Martí
966fbdcb8e Merge pull request #697 from carlosmn/ssl
Add HTTPS support
2012-06-05 13:53:33 -07:00
Arthur Schreiber
e9551e86b9 Fix git_close/http_close/local_close to set the transport's connected attribute to 0. 2012-06-02 16:52:22 +02:00
Carlos Martín Nieto
250b95b24b ssl: allow skipping the server certificate check
Sometimes it's useful not to perform the check. Allow it to be
configurable.
2012-05-26 21:17:08 +02:00
Carlos Martín Nieto
89460f3f57 ssl: teardown the connection on close
This should help us free some resources, though the libraries do keep
some buffers allocated regardless.
2012-05-19 17:50:52 +02:00
Carlos Martín Nieto
a6f24a5b3a https: make it work with OpenSSL as well
Add specific functions that use OpenSSL instead of GnuTLS
2012-05-19 17:50:52 +02:00
Carlos Martín Nieto
66024c7cbc http: add https support when GnuTLS is available
If it's not available, an error saying so will be returned when trying
to use a https:// URL.

This also unifies a lot of the network code to use git_transport in
many places instead of an socket descriptor.
2012-05-19 17:50:52 +02:00
Vicent Martí
59d91979d8 Merge pull request #710 from libgit2/breaking-changes
Break everything before the release
2012-05-18 13:53:38 -07:00
Michael Schubert
a167002f9e 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>
2012-05-18 12:44:01 +02:00
Vicent Martí
904b67e69f errors: Rename error codes 2012-05-18 01:48:50 +02:00
Vicent Martí
e172cf082e errors: Rename the generic return codes 2012-05-18 01:26:26 +02:00
Vicent Martí
4fbd1c007e refs: git_reference_listall -> git_reference_list 2012-05-18 01:26:16 +02:00
Carlos Martín Nieto
49ac5ac8fc transport git: don't use 'error' uninitialized 2012-05-06 13:17:39 +02:00
Vicent Martí
cd58c15c58 Merge remote-tracking branch 'scottjg/fix-mingw32' into development
Conflicts:
	src/netops.c
	src/netops.h
	src/transports/http.c
	tests-clar/clar
2012-05-05 16:47:20 -07:00
Scott J. Goldman
b4b96d56bf Fix gitno_connect() error handling on Windows
gitno_connect() can return an error or socket, which is fine on most
platforms where sockets are file descriptors (signed int), but on Windows,
SOCKET is an unsigned type, which is problematic when we are trying to
test if the socket was actually a negative error code.

This fix seperates the error code and socket in gitno_connect(), and fixes
the error handling in do_connect() functions to compensate. It appears
that git_connect() and the git-transport do_connect() functions had bugs
in the non-windows cases too (leaking sockets, and not properly reporting
connection error, respectively) so I went ahead and fixed those too.
2012-05-05 13:33:46 -07:00
Vicent Martí
3fbcac89c4 Remove old and unused error codes 2012-05-02 19:56:38 -07:00
Vicent Martí
ced9da5412 Merge pull request #654 from carlosmn/pkt-err
Recognize and report server-side error messages
2012-04-30 14:38:15 -07:00
Carlos Martín Nieto
39e6af6a7c net: recognize and report server-side error messages
When e.g. a repository isn't found, the server sends an error saying
so. Put that error message in our error buffer.
2012-04-30 18:24:14 +02:00
nulltoken
fa6420f73e buf: deploy git_buf_len() 2012-04-30 07:12:37 +02:00
Carlos Martín Nieto
dee5515a23 transports: buffer the git requests before sending them
Trying to send every single line immediately won't give us any speed
improvement and duplicates the code we need for other transports. Make
the git transport use the same buffer functions as HTTP.
2012-04-25 12:44:27 +02:00
Carlos Martín Nieto
7a520f5d8a fetch: use the streaming indexer when downloading a pack
This changes the git_remote_download() API, but the existing one is
silly, so you don't get to complain.

The new API allows to know how much data has been downloaded, how many
objects we expect in total and how many we've processed.
2012-04-25 12:39:11 +02:00
Russell Belfer
26515e73a1 Rename to git_reference_name_to_oid 2012-04-23 10:06:31 -07:00
Russell Belfer
44ef8b1b30 Fix warnings on 64-bit windows builds
This fixes all the warnings on win64 except those in deps, which
come from the regex code.
2012-04-17 10:47:39 -07:00
Russell Belfer
f201d613a8 Add git_reference_lookup_oid and lookup_resolved
Adds a new public reference function `git_reference_lookup_oid`
that directly resolved a reference name to an OID without returning
the intermediate `git_reference` object (hence, no free needed).

Internally, this adds a `git_reference_lookup_resolved` function
that combines looking up and resolving a reference.  This allows
us to be more efficient with memory reallocation.

The existing `git_reference_lookup` and `git_reference_resolve`
are reimplmented on top of the new utility and a few places in the
code are changed to use one of the two new functions.
2012-04-17 10:44:50 -07:00
Carlos Martín Nieto
a15156930b local transport: plug leak 2012-04-12 20:54:55 +02:00
Carlos Martín Nieto
a62053a050 error-handling local transport 2012-04-11 19:16:10 +02:00
Carlos Martín Nieto
25530fca3b error-handling: http 2012-04-11 19:16:10 +02:00
Carlos Martín Nieto
2b386acdb3 error-handling: git transport 2012-04-11 19:16:10 +02:00
nulltoken
79fd42301e transport/local: Fix peeling of nested tags 2012-04-10 21:39:01 +02:00
Vicent Martí
cb8a79617b error-handling: Repository
This also includes droping `git_buf_lasterror` because it makes no sense
in the new system. Note that in most of the places were it has been
dropped, the code needs cleanup. I.e. GIT_ENOMEM is going away, so
instead it should return a generic `-1` and obviously not throw
anything.
2012-03-07 00:11:43 +01:00
Russell Belfer
854eccbb2d Clean up GIT_UNUSED macros on all platforms
It turns out that commit 31e9cfc4cbcaf1b38cdd3dbe3282a8f57e5366a5
did not fix the GIT_USUSED behavior on all platforms.  This commit
walks through and really cleans things up more thoroughly, getting
rid of the unnecessary stuff.

To remove the use of some GIT_UNUSED, I ended up adding a couple
of new iterators for hashtables that allow you to iterator just
over keys or just over values.

In making this change, I found a bug in the clar tests (where we
were doing *count++ but meant to do (*count)++ to increment the
value).  I fixed that but then found the test failing because it
was not really using an empty repo.  So, I took some of the code
that I wrote for iterator testing and moved it to clar_helpers.c,
then made use of that to make it easier to open fixtures on a
per test basis even within a single test file.
2012-03-02 15:51:55 -08:00
schu
5e0de32818 Update Copyright header
Signed-off-by: schu <schu-github@schulog.org>
2012-02-13 17:11:09 +01:00
Carlos Martín Nieto
9269ccce14 diff-index: fix leak
The buffer wasn't getting freed if the last difference was a deletion.
2012-01-19 23:47:15 +01:00
Carlos Martín Nieto
860de00459 http: use PRIuZ
MSVC doesn't think %zd is a valid specifier.
2012-01-19 23:36:27 +01:00
nulltoken
e2580375dc transport: make local transport accept a file Uri containing percent-encoded characters
This makes libgit2 compliant with the following scenario

$ git ls-remote file:///d:/temp/dwm%20tinou
732d790b702db4b8985f5104fc44642654f6a6b6        HEAD
732d790b702db4b8985f5104fc44642654f6a6b6        refs/heads/master
732d790b702db4b8985f5104fc44642654f6a6b6        refs/remotes/origin/HEAD
732d790b702db4b8985f5104fc44642654f6a6b6        refs/remotes/origin/master

$ mv "/d/temp/dwm tinou" /d/temp/dwm+tinou

$ git ls-remote file:///d:/temp/dwm%20tinou
fatal: 'd:/temp/dwm tinou' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

$ git ls-remote file:///d:/temp/dwm+tinou
732d790b702db4b8985f5104fc44642654f6a6b6        HEAD
732d790b702db4b8985f5104fc44642654f6a6b6        refs/heads/master
732d790b702db4b8985f5104fc44642654f6a6b6        refs/remotes/origin/HEAD
732d790b702db4b8985f5104fc44642654f6a6b6        refs/remotes/origin/master
2011-12-28 20:40:08 +01:00
Vicent Martí
d16e4b2b88 remotes: Remove unused variables 2011-12-25 00:25:04 +01:00
nulltoken
db1f7e596c remote: add test to retrieve the advertised references from a local repository and fix related implementation 2011-12-21 21:30:12 +01:00
Russell Belfer
97769280ba Use git_buf for path storage instead of stack-based buffers
This converts virtually all of the places that allocate GIT_PATH_MAX
buffers on the stack for manipulating paths to use git_buf objects
instead.  The patch is pretty careful not to touch the public API
for libgit2, so there are a few places that still use GIT_PATH_MAX.

This extends and changes some details of the git_buf implementation
to add a couple of extra functions and to make error handling easier.

This includes serious alterations to all the path.c functions, and
several of the fileops.c ones, too.  Also, there are a number of new
functions that parallel existing ones except that use a git_buf
instead of a stack-based buffer (such as git_config_find_global_r
that exists alongsize git_config_find_global).

This also modifies the win32 version of p_realpath to allocate whatever
buffer size is needed to accommodate the realpath instead of hardcoding
a GIT_PATH_MAX limit, but that change needs to be tested still.
2011-12-07 23:08:15 -08:00
schu
fe9a0e09fe transports: fix -Wunused-but-set-variable warning
Signed-off-by: schu <schu-github@schulog.org>
2011-11-29 11:02:42 +01:00
Vicent Marti
d88d4311c7 remote: Cleanup the remotes code
- Hide the remaining transports code
- Drop `git_headarray`, switch to using a callback to list refs. Makes
the code cleaner.
2011-11-28 08:40:40 +01:00
Vicent Marti
45e79e3701 Rename all _close methods
There's no difference between `_free` and `_close` semantics: keep
everything with the same name to avoid confusions.
2011-11-26 08:48:00 +01:00
Carlos Martín Nieto
40a40e8e9d net: move the reference storage to common code 2011-11-18 21:03:23 +01:00
schu
75abd2b924 Free all used references in the source tree
Since references are not owned by the repository anymore we have to free
them manually now.

Signed-off-by: schu <schu-github@schulog.org>
2011-11-06 03:15:26 +01:00
Vicent Martí
89fb8f025a Merge pull request #456 from brodie/perm-fixes
Create objects, indexes, and directories with the right file permissions
2011-10-28 19:04:23 -07:00
Vicent Marti
3286c408ec global: Properly use git__ memory wrappers
Ensure that all memory related functions (malloc, calloc, strdup, free,
etc) are using their respective `git__` wrappers.
2011-10-28 19:02:36 -07:00
Brodie Rao
01ad7b3a9e *: correct and codify various file permissions
The following files now have 0444 permissions:

- loose objects
- pack indexes
- pack files
- packs downloaded by fetch
- packs downloaded by the HTTP transport

And the following files now have 0666 permissions:

- config files
- repository indexes
- reflogs
- refs

This brings libgit2 more in line with Git.

Note that git_filebuf_commit() and git_filebuf_commit_at() have both
gained a new mode parameter.

The latter change fixes an important issue where filebufs created with
GIT_FILEBUF_TEMPORARY received 0600 permissions (due to mkstemp(3)
usage). Now we chmod() the file before renaming it into place.

Tests have been added to confirm that new commit, tag, and tree
objects are created with the right permissions. I don't have access to
Windows, so for now I've guarded the tests with "#ifndef GIT_WIN32".
2011-10-14 16:07:47 -07:00
nulltoken
a41e9f131e Fix compilation error on Windows 2011-10-13 22:48:07 +02:00
Carlos Martín Nieto
dfafb03bdc Move the transports to their own directory 2011-10-12 21:34:25 +02:00