Log

Author Commit Date CI Message
Vicent Marti bdd18829 2011-07-11T02:58:00 Cleanup external API Some of the WIP API calls have been hidden in preparation for the next minor release.
Vicent Marti f27f29b1 2011-07-09T15:13:32 include: Fix unmatched params in documentation
Vicent Martí d37ba672 2011-07-09T06:45:30 Merge pull request #312 from nulltoken/patch-2 Fix MSVC compilation warning
nulltoken b21fb849 2011-07-09T06:36:18 Fix MSVC compilation warning
Vicent Marti c52736fa 2011-07-09T15:05:14 status: Cleanup The `hashfile` function has been moved to ODB, next to `git_odb_hash`. Global state has been removed from the dirent call in `status.c`, because global state is killing the rainforest and causing global warming.
Jason Penny 34dfea27 2011-06-24T20:36:53 status: handle subdirs for git_status_file
Jason Penny 6b251490 2011-06-24T18:35:06 status: add subdir to test repo
Jason Penny 20361b2f 2011-06-23T18:51:22 status: get status for single file Add git_status_file to be able to retrieve status of single file by supplying a path.
Jason Penny 3af6b34a 2011-06-22T18:31:20 status: get file statuses and run callback Add git_status_foreach() to run a callback on each file passing the path and a status value.
Jason Penny 3b2a423c 2011-07-09T00:08:52 status: nonexistent file with git_status_file() Throws GIT_ENOTFOUND error if given a filename that is not in HEAD, index, nor the work tree.
Jason Penny 210940da 2011-06-22T18:23:57 status: new test repo
Jason Penny 205166d2 2011-06-22T18:19:46 status: get blob object id of file on disk Add git_status_hashfile() to get blob's object id for a file without adding it to the object database or needing a repository at all. This functionality is similar to `git hash-object` without '-w'.
Jason Penny 2b90cc26 2011-07-08T23:51:05 status: consolidate some test code Refactored copy of test repo to a function.
Jason Penny 7361857c 2011-07-08T22:44:15 Update tests/NAMING
Vicent Marti c2db984b 2011-07-09T13:27:08 tsort: Remove unused CLZ methods
Vicent Martí 0448310f 2011-07-09T04:24:23 Merge pull request #311 from nulltoken/ntk/fix-win32-specs Ntk/fix win32 specs
nulltoken ae2e4c6a 2011-07-09T08:41:02 win32: replace usage of _MSV_VER with _MSC_VER
nulltoken 38ce60f0 2011-07-09T08:36:37 Fix MSVC compilation warning
Vicent Marti 06c43821 2011-07-09T02:37:16 Remove unused methods The direct-writes commit left some (slow) internals methods that were no longer needed. These have been removed. Also, the Reflog code was using the old `git_signature__write`, so it has been rewritten to use a normal buffer and the new `writebuf` signature writer. It's now slightly simpler and faster.
Vicent Marti afeecf4f 2011-07-09T02:10:46 odb: Direct writes are back DIRECT WRITES ARE BACK AND FASTER THAN EVER. The streaming writer to the ODB was an overkill for the smaller objects like Commit and Tags; most of the streaming logic was taking too long. This commit makes Commits, Tags and Trees to be built-up in memory, and then written to disk in 2 pushes (header + data), instead of streaming everything. This is *always* faster, even for big files (since the git_filebuf class still does streaming writes when the memory cache overflows). This is also a gazillion lines of code smaller, because we don't have to precompute the final size of the object before starting the stream (this was kind of defeating the point of streaming, anyway). Blobs are still written with full streaming instead of loading them in memory, since this is still the fastest way. A new `git_buf` class has been added. It's missing some features, but it'll get there.
Vicent Marti 2fc78e70 2011-07-08T23:01:37 posix: Portable `vsnprintf` Our good, lovely folks at Microsoft decided that there was no good reason to make `vsnprintf` compilant with the C standard, so that function in Windows returns -1 on overflow, instead of returning the actual byte count needed to write the full string. We now handle this situation more gracefully with the POSIX compatibility layer, by returning the needed byte size using an auxiliary method instead of blindly resizing the target buffer until it fits. This means we can now support `printf`s of any size by allocating a temporary buffer. That's good.
Vicent Marti d483a911 2011-07-08T18:31:05 signature: Fix optional header
schu 27df4275 2011-06-28T14:13:12 reflog: add API to read or write a reference log So far libgit2 didn't support reference logs (reflog). Add a new git_reflog_* API for basic reading and writing of reflogs: * git_reflog_read * git_reflog_write * git_reflog_free Signed-off-by: schu <schu-github@schulog.org>
schu 6727e300 2011-06-19T23:06:53 git_signature__write: make header optionally Signed-off-by: schu <schu-github@schulog.org>
Vicent Marti f0ab9fda 2011-07-08T18:22:44 index: Return `GIT_ENOTFOUND` when an entry cannot be opened
Vicent Martí d102bbba 2011-07-08T09:21:30 Merge pull request #309 from schu/rr-flaw reference_rename: fix flaw in force-renaming
Vicent Martí 44b75a13 2011-07-08T09:21:13 Merge pull request #308 from schu/unused-but-set-var tsort: remove unused but set variable
schu 73294339 2011-07-07T21:24:12 reference_rename: fix flaw in force-renaming reference_rename didn't respect the force flag. Fixed. Reported-by: nulltoken <emeric.fermas@gmail.com> Signed-off-by: schu <schu-github@schulog.org>
nulltoken 6d4f090d 2011-07-07T17:49:55 reference_renaming: add additional tests Add some more test checking forced reference renaming. Signed-off-by: nulltoken <emeric.fermas@gmail.com> Acked-by: schu <schu-github@schulog.org>
schu d4cb0ee8 2011-07-07T18:14:53 tsort: remove unused but set variable Signed-off-by: schu <schu-github@schulog.org>
Vicent Marti da5b1e1c 2011-07-07T17:56:10 index: Fix memory leak on OOM
nulltoken 2b5af615 2011-07-07T13:47:45 tag: add pattern based retrieval of list of tag names
nulltoken 417a581d 2011-07-07T13:38:47 tsort: fix wrong header inclusion
Vicent Marti c1e85748 2011-07-07T12:23:47 test-core: Fix warning in uniq test
nulltoken bdcc4611 2011-07-07T10:11:00 Fix MSVC compilation warnings
Vicent Marti de18f276 2011-07-07T01:46:20 vector: Timsort all of the things Drop the GLibc implementation of Merge Sort and replace it with Timsort. The algorithm has been tuned to work on arrays of pointers (void **), so there's no longer a need to abstract the byte-width of each element in the array. All the comparison callbacks now take pointers-to-elements, not pointers-to-pointers, so there's now one less level of dereferencing. E.g. int index_cmp(const void *a, const void *b) { - const git_index_entry *entry_a = *(const git_index_entry **)(a); + const git_index_entry *entry_a = (const git_index_entry *)(a); The result is up to a 40% speed-up when sorting vectors. Memory usage remains lineal. A new `bsearch` implementation has been added, whose callback also supplies pointer-to-elements, to uniform the Vector API again.
Vicent Marti c63aa494 2011-07-07T01:04:14 test: Abort when the temp workdir cannot be created
Vicent Martí dbede305 2011-07-06T16:58:06 Merge pull request #306 from carlosmn/development Fix network MSYS compilation
Vicent Martí 1af935a3 2011-07-06T12:29:22 Merge pull request #307 from nulltoken/patch-1 Fix MSVC compilation warnings
nulltoken 26911cbd 2011-07-06T12:27:51 Fix MSVC compilation warnings
Vicent Martí bf9a2e98 2011-07-06T10:55:06 Merge pull request #296 from kiryl/index-optimization Index optimization
Vicent Marti c68dee2a 2011-07-06T19:46:41 revwalk: Properly mark uninteresting commits
Vicent Marti 858dba58 2011-07-06T18:08:13 refs: Cleanup reference renaming `git_futils_rmdir_r`: rename, clean up. `git_reference_rename`: cleanup. Do not use 3x4096 buffers on the stack or things will get ugly very fast. We can reuse the same buffer.
Vicent Martí b8e2db5f 2011-07-06T06:54:11 Merge pull request #303 from schu/ref-rename reference_rename: git compliant reference renaming v2
Carlos Martín Nieto 39cdf272 2011-07-06T09:11:03 Fix network MSYS compilation MSYS/MinGW uses winsock but obviously doesn't set _MSC_VER. Use _WIN32 to decide whether to use winsock or BSD headers. Also remove these headers from src/transport_git.c altogether, as they are not needed. MSYS is very conservative, so we have to tell it that we don't care about versions of Windows lower than WindowsXP. We also need to tell CMake to add ws2_32 to the libraries list and we shouldn't add the -fPIC option, to MSYS because it complains that it does it anyway. Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
nulltoken 1b938a58 2011-07-03T22:27:05 Remove duplicated recursive directory removal related code
nulltoken 1ee5fd90 2011-07-03T14:42:32 Fix windows specific issues - msvc compilation warnings - not released file handle that prevents file removal
schu 0ffcf78a 2011-06-14T15:16:43 reference_rename: git compliant reference renaming So far libgit2 didn't handle the following scenarios: * Rename of reference m -> m/m * Rename of reference n/n -> n Fixed. Since we don't write reflogs, we have to delete any old reflog for the renamed reference. Otherwise git.git will possibly fail when it finds invalid logs. Reported-by: nulltoken <emeric.fermas@gmail.com> Signed-off-by: schu <schu-github@schulog.org>
schu 7ea50f60 2011-06-09T19:56:42 Add tests for git_futils_rmdir_resurs() Signed-off-by: schu <schu-github@schulog.org>
schu 42b3a460 2011-06-09T19:51:33 fileops: add git_futils_rmdir_recurs() git_futils_rmdir_recurs() shall remove the given directory and all subdirectories. This happens only if the directories are empty. Signed-off-by: schu <schu-github@schulog.org>
schu e190da78 2011-06-09T18:11:11 fileops: add convenience function is_dot_or_dotdot() Signed-off-by: schu <schu-github@schulog.org>
schu a6e0f315 2011-05-29T16:46:24 Add test case checking renaming of a branch to a new name prefixed with the old name succeeds, e.g. refs/heads/foo -> refs/heads/foo/bar Reported-by: nulltoken <emeric.fermas@gmail.com> Signed-off-by: schu <schu-github@schulog.org>
Vicent Marti e1bf24c8 2011-07-06T02:14:30 build: Add simple Makefile for embedding the library Run `make -f Makefile.embed` to get a `libgit2.a` with no dependencies and no configuration on any Unix-like system. The generated library can be linked with any piece of software without licensing issues. Have fun.
Vicent Marti 1e3300d8 2011-07-06T01:44:15 fnmatch: Fix compilation under Windows
Vicent Marti e9c6571d 2011-07-06T01:04:04 fnmatch: Use native on Unix, emulate on Win32
Carlos Martín Nieto 65077434 2011-07-05T21:15:03 Also update local_connect's unused var name for MSVC Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Martí 3827c923 2011-07-05T12:32:20 Merge pull request #305 from nulltoken/patch-6 repository: fix typo'ed assert
nulltoken 7a44cc41 2011-07-05T11:00:32 repository: fix typo'ed assert
Vicent Martí 0838ccc2 2011-07-05T10:50:13 Merge pull request #304 from carlosmn/config Restore config10 test file
Carlos Martín Nieto 7a7ef2dc 2011-07-05T17:44:51 Restore config10 test file Removing a section variable doesn't remove its section header. Overwrite the config10 file so there are no changes after the test is run. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Kirill A. Shutemov c20ffa61 2011-07-01T00:34:23 util: introduce merge sort routine In some cases it's important to preserve order of elements with equal keys (stable sort). qsort(3) doesn't define order of elements with equal keys. git__msort() implements merge sort which is stable sort. Implementation taken from git. Function renamed git_qsort() -> git__msort(). Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Kirill A. Shutemov 8cc16e29 2011-06-30T23:22:42 index: speedup git_index_append()/git_index_append2() git_index_find() in index_insert() is useless if replace is not requested (append). Do not call it in this case. It speedup git_index_append() *dramatically* on large indexes. $ cat index_test.c int main(int argc, char **argv) { git_index *index; git_repository *repo; git_odb *odb; struct git_index_entry entry; git_oid tree_oid; char tree_hex[41]; int i; git_repository_init(&repo, "/tmp/myrepo", 0); odb = git_repository_database(repo); git_repository_index(&index, repo); memset(&entry, 0, sizeof(entry)); git_odb_write(&entry.oid, odb, "", 0, GIT_OBJ_BLOB); entry.path = "test.file"; for (i = 0; i < 50000; i++) git_index_append2(index, &entry); git_tree_create_fromindex(&tree_oid, index); git_oid_fmt(tree_hex, &tree_oid); tree_hex[40] = '\0'; printf("tree: %s\n", tree_hex); git_index_free(index); git_repository_free(repo); return 0; } Before: $ time ./index_test tree: 43f73659c43b651588cc81459d9e25b08721b95d ./index_test 151.19s user 0.05s system 99% cpu 2:31.78 total After: $ time ./index_test tree: 43f73659c43b651588cc81459d9e25b08721b95d ./index_test 0.05s user 0.00s system 94% cpu 0.059 total About 2573 times speedup on this test :) Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Kirill A. Shutemov 245adf4f 2011-07-02T01:08:42 index: introduce git_index_uniq() function It removes all entries with equal path except last added. On large indexes git_index_append() + git_index_uniq() before writing is *much* faster, than git_index_add(). Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Kirill A. Shutemov 476c42ac 2011-07-02T00:41:49 vector: implement git_vector_uniq() The routine remove duplictes from the vector. Only the last added element of elements with equal keys remains in the vector. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Kirill A. Shutemov 0b0a6b11 2011-07-01T00:48:37 vector, index: use git__msort() for vector sorting Index operation use git_vector_sort() to sort index entries. Since index support adding duplicates (two or more entries with the same path), it's important to preserve order of elements. Preserving order of elements allows to make decisions based on order. For example it's possible to implement function witch removes all duplicates except last added. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Vicent Marti 17837602 2011-07-05T15:38:26 repository: Fix unused parameter in Unix systems
Vicent Martí 2f3f28b4 2011-07-05T06:35:45 Merge pull request #302 from carlosmn/development Small fixes in pack_window_open
Vicent Martí e45e548a 2011-07-05T06:33:28 Merge pull request #299 from kiryl/examples-general-warnings Fix warning in examples/general.c
Vicent Martí 71a8e484 2011-07-05T06:32:58 Merge pull request #297 from nulltoken/patch-5 Fix MSVC compilation issue
Carlos Martín Nieto 2ee318a7 2011-07-05T15:09:17 Small fixes in pack_window_open Check if the window structure has actually been allocated before trying to access it, and don't leak said structure if the map fails. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Martí d830919a 2011-07-05T06:27:56 Merge pull request #301 from carlosmn/hashtable-include-fix Include common.h in hashtable.h
Carlos Martín Nieto 8f63d54c 2011-07-05T14:36:22 Include common.h in hashtable.h Without this, hashtable.h doesn't know what uint32_t is and the compiler thinks that it's a function type. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Martí f12aa9dc 2011-07-05T04:31:37 Merge pull request #300 from carlosmn/gsoc2011/master A bit of networking
Kirill A. Shutemov 6f2b0a3a 2011-07-05T12:00:18 examples/general: fix misc warnings examples/general.c:393:25: warning: unused variable ‘reftarget’ [-Wunused-variable] examples/general.c:357:19: warning: unused variable ‘e’ [-Wunused-variable] examples/general.c:444:1: warning: control reaches end of non-void function [-Wreturn-type] Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Kirill A. Shutemov d6d877d2 2011-07-05T11:54:16 examples/general: fix warnings on not handled reference type in switch examples/general.c:402:5: warning: enumeration value ‘GIT_REF_INVALID’ not handled in switch [-Wswitch] examples/general.c:402:5: warning: enumeration value ‘GIT_REF_PACKED’ not handled in switch [-Wswitch] examples/general.c:402:5: warning: enumeration value ‘GIT_REF_HAS_PEEL’ not handled in switch [-Wswitch] examples/general.c:402:5: warning: enumeration value ‘GIT_REF_LISTALL’ not handled in switch [-Wswitch] Signe-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Kirill A. Shutemov 51cc50a3 2011-07-05T11:43:21 examples/general: fix git_commit_create_v() arguments type general.c:208: warning: passing argument 7 of 'git_commit_create_v' from incompatible pointer type Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
nulltoken ed72182b 2011-07-05T01:09:37 Fix MSVC compilation issue
Carlos Martín Nieto 7d69f788 2011-06-28T16:48:04 Add variable writing tests Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto 156af801 2011-06-28T16:27:16 Add test for section header at end of file Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto f58c53ce 2011-06-28T16:24:51 Correctly detect truncated input in header parsing If the section header is the last line in the file, parse_section_header would incorrectly decide that the input had been truncated. Fix this by checking whether the actual input line is correctly formatted. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto 86b5ab16 2011-06-28T16:08:46 git_config_add_file should rethrow Otherwise, the information about why there was an error gets lost. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto 2601fcfc 2011-06-28T15:21:44 Add tests for deleting a config var Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Carlos Martín Nieto 6d4b6097 2011-06-28T15:20:42 Add git_config_del to delete a variable Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Vicent Marti 9f86ec52 2011-07-05T02:28:18 signature: Fix warnings Add extra braces to avoid ambiguous if-else. Also, free() doesn't need a check.
nulltoken a01acc47 2011-07-03T14:03:43 signature: straighten the creation of a signature - Fails on empty name and/or email - Trims leading and trailing spaces of name and email
nulltoken 42a1b5e1 2011-07-01T17:59:10 signature: enhance relaxed parsing of bogus signatures Final fix for issue #278
schu 60caf024 2011-06-28T17:06:06 t04-commit: add tests for git_signature__parse git_signature__parse used to be very strict about what's a well-formed signature. Add tests checking git_signature__parse can stick with "unexpected" signatures (IOW no author name and / or no email, etc). Signed-off-by: schu <schu-github@schulog.org>
schu 8b2c913a 2011-06-29T14:48:09 git_signature__parse: make parsing less strict git_signature__parse used to be very strict about what's a well-formed signature. Since git_signature__parse is used only when reading already existing signatures, we should not care about if it's a valid signature too much but rather show what we got. Reported-by: nulltoken <emeric.fermas@gmail.com> Signed-off-by: schu <schu-github@schulog.org>
Vicent Marti 1bc83ff1 2011-07-05T01:33:39 repository: Cleanup initialization
Vicent Marti eec3fe39 2011-07-05T01:11:33 fileutils: Finish dropping the old `prettify_path`
Vicent Marti 19ac1ed7 2011-07-04T21:33:26 fileops: Fix stat() on directories for W32 The `stat` methods were having issues when called with a trailing slash in Windows platforms. We now use GetFileAttributes() where possible, which doesn't have this restriction.
Vicent Marti 5ad739e8 2011-07-04T20:05:11 fileops: Drop `git_fileops_prettify_path` The old `git_fileops_prettify_path` has been replaced with `git_path_prettify`. This is a much simpler method that uses the OS's `realpath` call to obtain the full path for directories and resolve symlinks. The `realpath` syscall is the original POSIX call in Unix system and an emulated version under Windows using the Windows API.
Vicent Marti f79026b4 2011-07-04T11:43:34 fileops: Cleanup Cleaned up the structure of the whole OS-abstraction layer. fileops.c now contains a set of utility methods for file management used by the library. These are abstractions on top of the original POSIX calls. There's a new file called `posix.c` that contains emulations/reimplementations of all the POSIX calls the library uses. These are prefixed with `p_`. There's a specific posix file for each platform (win32 and unix). All the path-related methods have been moved from `utils.c` to `path.c` and have their own prefix.
Vicent Marti 678e9e04 2011-07-03T13:33:43 build: Move OS-specific compat to their own folders
Kirill A. Shutemov 932d1baf 2011-06-30T19:52:34 cleanup: remove trailing spaces Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Tim Harder 1f4f4d17 2011-07-01T17:39:03 cmake: Use system zlib if found on non-Windows systems
Vicent Marti ec626853 2011-07-01T17:34:27 zlib: Declare preprocessor directives at build time
Vicent Marti 17d52304 2011-07-01T17:26:23 build: Simplify build structure This will make libgit2 more suitable for embedding.
Vicent Marti b2cef77c 2011-06-30T21:29:42 common: Force 64 bit fileops at compile time
Vicent Marti 8a062003 2011-06-30T21:10:16 zlib: No visualization attributes. The visibility attribute is a headache on many platforms like Solaris, and not even supported on Windows.