Commit Graph

403 Commits

Author SHA1 Message Date
Carlos Martín Nieto
4e02504f52 Move config to support the new hash code
The hashes have been copied from the references code

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
2011-03-29 12:17:29 +02:00
Carlos Martín Nieto
3b4835c25a Correctly parse the section header
If cfg_readline consumes the line, then parse_section_header will read
past it and if we read a character, parse_variable won't have the full
name.

This solution is a bit hackish, but it's the simplest way to get the
code to parse correctly.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
2011-03-28 18:07:22 +02:00
Carlos Martín Nieto
908afb771a parse_section_header: save the name where it belongs
Save the location of the name in section_out instead of returning it
as an int. Use the return code to signal success or failure.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
2011-03-28 17:53:04 +02:00
Carlos Martín Nieto
e4c796f1a2 Read and parse the confguration when openingt the config file
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
2011-03-28 17:51:18 +02:00
Carlos Martín Nieto
a69053c715 Convert config.c to LF
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
2011-03-28 17:12:53 +02:00
Carlos Martín Nieto
5d4cd00305 Move the struct declaration outside config.c
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
2011-03-28 17:03:08 +02:00
Vicent Marti
a3002d5694 First version - WIP
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-06 00:21:48 +02:00
Vicent Marti
86627121c8 Fix type-conversion warning in MSVC
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-06 00:03:31 +02:00
Vicent Marti
d6b5f5cca9 Add git_oid_shorten
Set of methods to find the minimal-length to uniquely identify every OID
in a list.

Includes stress test.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 23:54:49 +02:00
Vicent Marti
55ffebe377 Fix creation of deeply-rooted references
Use a new `gitfo_creat_force` that will create the full path to a file
before creating it.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 14:34:32 +02:00
Vicent Marti
246eba80af Use memmove() in git__dirname and git__basename
We cannot make sure that the user doesn't use the same buffer as source
and destination, so write to it using memmove.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 13:58:47 +02:00
Vicent Marti
60cb1d10b3 Use memmove() in git__joinpath for overlapping copies
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 13:56:14 +02:00
Vicent Marti
545a6915eb Change interface for Tree Index attr (always unsigned)
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 13:46:37 +02:00
Sakari Jokinen
9de27ad0c4 Check for valid range of attributes for tree entry 2011-03-05 13:46:27 +02:00
Vicent Marti
3490188b3c Change the return type of git_blob_rawcontent
Should return `void *` for raw bytes.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 13:29:50 +02:00
Vicent Marti
e0011be330 Fix the opening of empty repositories
We were checking for the index file, which is not assured to exist on
clean git repositories.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 13:22:16 +02:00
Vicent Marti
f335b42c72 Fix segmentation fault when freeing a repository
Disable garbage collection of cross-references to prevent
double-freeing. Internal reference management is now done
with a separate method.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-05 02:05:26 +02:00
Vicent Marti
e06dd9b6d6 Fix 'possibly uninitialized variable' warning 2011-03-04 15:23:52 +02:00
Vicent Marti
f7fcb0dd1b Don't use non-int bit fields
They are not standard. MSVC complains about them. And that's not good.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-04 15:10:16 +02:00
Vicent Marti
3c41c635fb Fix compilation in MSVC
MSVC cannot substract void pointers. Go figure.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 21:58:37 +02:00
Vicent Marti
71d33382a7 Move the external includes folder from src to include
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:53 +02:00
Vicent Marti
584f49a5ce Fix several issues with refcounting
- Added several missing reference increases
- Add new destructor to the repository that does not GC the objects

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:53 +02:00
Vicent Marti
971c90befe Do not free the index if it's owned by a repository
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:52 +02:00
Vicent Marti
48c27f86bb Implement reference counting for git_objects
All `git_object` instances looked up from the repository are reference
counted. User is expected to use the new `git_object_close` when an
object is no longer needed to force freeing it.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:52 +02:00
Vicent Marti
86d7e1ca6f Fix searching in git_vector
We now store only one sorting callback that does entry comparison. This
is used when sorting the entries using a quicksort, and when looking for
a specific entry with the new search methods.

The following search methods now exist:

	git_vector_search(vector, entry)
	git_vector_search2(vector, custom_search_callback, key)

	git_vector_bsearch(vector, entry)
	git_vector_bsearch2(vector, custom_search_callback, key)

The sorting state of the vector is now stored internally.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:52 +02:00
Vicent Marti
5de079b86d Change the object creation/lookup API
The methods previously known as

	git_repository_lookup
	git_repository_newobject
	git_repository_lookup_ref

are now part of their respective namespaces:

	git_object_lookup
	git_object_new
	git_reference_lookup

This makes the API more consistent with the new references API.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:52 +02:00
nulltoken
5ad0351db1 Fix reference removal: remove packed refs together with loose ones 2011-03-03 20:23:52 +02:00
nulltoken
8f90ced5ed Fix corner case in reference renaming
Renaming a packed reference should not pack another reference
which happens to be in both loose and pack state.
2011-03-03 20:23:52 +02:00
Vicent Marti
19a30a3f6e Add new move function, gitfo_mv_force
Forces a move by creating the folder for the destination file, if it
doesn't exist.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:51 +02:00
nulltoken
129007b423 Fix refs renaming to prevent renaming with an invalid name 2011-03-03 20:23:51 +02:00
nulltoken
e2d426227f Fix reference renaming to prevent duplicated names 2011-03-03 20:23:51 +02:00
nulltoken
76f7cf7075 Fix reference renaming implementation to match standard git behavior 2011-03-03 20:23:51 +02:00
nulltoken
669db21b28 Slightly changed the behavior of git__joinpath() and git__joinpath_n(). 2011-03-03 20:23:51 +02:00
nulltoken
0594e3efb7 Prevent _dirent_loose_load() from choking on empty folders 2011-03-03 20:23:51 +02:00
nulltoken
d2d6912e6c Refactored the opening and the initialization of a repository. 2011-03-03 20:23:50 +02:00
Vicent Marti
87d3acf45e Finish the References API
The following methods have been implemented:

	git_reference_packall
	git_reference_rename
	git_reference_delete

The library now has full support for packed references, including
partial and total writing. Internal documentation has been updated with
the details.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:50 +02:00
Vicent Marti
17cdf25208 Make some Object methods take a const parameter
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:50 +02:00
Vicent Marti
2e60b65290 Add extra methods to the new Hashtable implementation
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:50 +02:00
Vicent Marti
ccef1c9dc2 Move the path comparison method to fileops.c
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:50 +02:00
Vicent Marti
da7c3c71c0 Fix warnings in vector.c
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:49 +02:00
Vicent Marti
86194b2433 Split packed from unpacked references
These two reference types are now stored separately to eventually allow
the removal/renaming of loose references and rewriting of the refs
packfile.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:49 +02:00
Vicent Marti
32054c24a2 Brush up the refs API
Changed some more API details and updated documentation.

Sketched API for addition/removal of entries.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-03 20:23:49 +02:00
nulltoken
1d8cc73123 Refactored the reference creation API. 2011-03-03 20:23:49 +02:00
nulltoken
e1be102816 Added some more tests to ensure the correct behavior of git_reference__normalize_name(). 2011-03-03 20:23:48 +02:00
nulltoken
6a0895adea Added GIT_EINVALIDREFSTATE error. 2011-03-03 20:23:48 +02:00
nulltoken
aa2120e9da Added git_reference__normalize_name() along with tests. 2011-03-03 20:23:48 +02:00
Vicent Marti
5cfd9ce462 Add missing include to odb_backends.h
Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-03-01 22:15:20 +02:00
Sakari Jokinen
fc70832a4f include "oid.h" in headers that use git_oid
This makes generating bindings to hlibgit2 easier
2011-02-25 00:00:36 +02:00
Vicent Marti
7360122ba9 Fix file renaming in MinGW
We now use MoveFileEx, which is not assured to be atomic but works for
always (both if the destination exists, or if it doesn't) and is
available in MinGW.

Since this is a Win32 API call, complaint about lost or overwritten files
should be forwarded at Steve Ballmer.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-02-24 23:53:40 +02:00
Vicent Marti
3eb47c9f67 Fix renaming of files in Win32
The `rename` call doesn't quite work on Win32: expects the destination
file to not exist. We're using a native Win32 call in those cases --
that should do the trick.

Signed-off-by: Vicent Marti <tanoku@gmail.com>
2011-02-24 21:43:08 +02:00