Commit Graph

54 Commits

Author SHA1 Message Date
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