summaryrefslogtreecommitdiff
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* odb: hardcode the empty blob and treecmn/empty-objectsCarlos Martín Nieto2014-11-081-0/+39
| | | | | | | | | | | | | | | | | | | | | git hardocodes these as objects which exist regardless of whether they are in the odb and uses them in the shell interface as a way of expressing the lack of a blob or tree for one side of e.g. a diff. In the library we use each language's natural way of declaring a lack of value which makes a workaround like this unnecessary. Since git uses it, it does however mean each shell application would need to perform this check themselves. This makes it common work across a range of applications and an issue with compatibility with git, which fits right into what the library aims to provide. Thus we introduce the hard-coded empty blob and tree in the odb frontend. These hard-coded objects are checked for before going to the backends, but after the cache check, which means the second time they're used, they will be treated as normal cached objects instead of creating new ones.
* iterator: submodules are determined by an index or treecmn/submodule-and-dirCarlos Martín Nieto2014-11-074-22/+25
| | | | | | | | | | | | We cannot know from looking at .gitmodules whether a directory is a submodule or not. We need the index or tree we are comparing against to tell us. Otherwise we have to assume the entry in .gitmodules is stale or otherwise invalid. Thus we pass the index of the repository into the workdir iterator, even if we do not want to compare against it. This follows what git does, which even for `git diff <tree>`, it will consider staged submodules as such.
* submodules: add failing test for stale module entriesCarlos Martín Nieto2014-11-071-0/+48
| | | | | | | | | We consider an entry in .gitmodules to mean that we have a submodule at a particular path, even if HEAD^{tree} and the index do not contain any reference to it. We should ignore that submodule entry and simply consider that path to be a regular directory.
* checkout_index: Remove stage 0 when checking out conflictsEdward Thomson2014-11-061-10/+39
|
* checkout_index: remove conflicts when checking out new filesEdward Thomson2014-11-061-3/+87
|
* Merge pull request #2598 from libgit2/cmn/stacked-ignoreEdward Thomson2014-11-061-0/+32
|\ | | | | ignore: don't leak rules into higher directores
| * ignore: add failing test for a file mentioning the parentCarlos Martín Nieto2014-11-061-0/+32
| | | | | | | | | | When we mention "src" in src/.gitignore, we wrongly consider src/ itself to be ignored.
* | Merge pull request #2682 from libgit2/cmn/fetch-tags-refspecEdward Thomson2014-11-061-0/+27
|\ \ | |/ |/| remote: check for the validity of the refspec when updating FETCH_HEAD
| * remote: add a failing test for checking the current branch's upstreamCarlos Martín Nieto2014-11-021-0/+27
| | | | | | | | | | | | | | | | | | | | When we update FETCH_HEAD we check whether the remote is the current branch's upstream remote. The code does not check whether the current refspec is relevant for this reference but always tries to perform the reverse transformation, which causes it to error out if the refspec doesn't match the reference. Thanks to Pierre-Olivier Latour for the reproduction recipe.
* | Merge pull request #2688 from libgit2/cmn/ignore-file-trailing-crEdward Thomson2014-11-051-0/+32
|\ \ | | | | | | ignore: consider files with a CR in their names
| * | ignore: consider files with a CR in their namescmn/ignore-file-trailing-crCarlos Martín Nieto2014-11-051-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently consider CR to start the end of the line, but that means that we miss cases with CR CR LF which can be used with git to match files whose names have CR at the end of their names. The fix from the patch comes from Russell's comment in the issue. This fixes #2536.
* | | git_remote_rename: propogate GIT_ENOTFOUNDEdward Thomson2014-11-031-0/+9
| | |
* | | Merge pull request #2679 from jfultz/missing-includeEdward Thomson2014-11-031-0/+16
|\ \ \ | |/ / |/| | Make config reading continue after hitting a missing include file.
| * | Clean up issues include.path issues found during code review.John Fultz2014-11-021-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | * Error-handling is cleaned up to only let a file-not-found error through, not other sorts of errors. And when a file-not-found error happens, we clean up the error. * Test now checks that file-not-found introduces no error. And other minor cleanups.
| * | Make config reading continue after hitting a missing include file.John Fultz2014-11-011-0/+15
| |/ | | | | | | | | | | | | | | | | | | | | For example, if you have [include] path = foo and foo didn't exist, git_config_open_ondisk() would just give up on the rest of the file. Now it ignores the unresolved include without error and continues reading the rest of the file.
* | remote: fix tagopt testCarlos Martín Nieto2014-11-021-7/+7
|/ | | | | | | | | | | An anonymous remote wouldn't create remote-tracking branches, so testing we don't create them for TAGS_ALL is nonsensical. Furthermore, the name of the supposed remote-tracking branch was also not one which would have been created had it had a name. Give the remote a name and test that we only create the tags when we pass TAGS_ALL and that we do create the remote-branch branch when given TAGS_AUTO.
* revert tests: always use core.autocrlf=false in testsEdward Thomson2014-10-2713-12/+8
|
* s/git_merge_head/git_annotated_commitEdward Thomson2014-10-2611-383/+386
| | | | | Rename git_merge_head to git_annotated_commit, as it becomes used in more operations than just merge.
* rebase: clean up some warnings and memory leaksEdward Thomson2014-10-261-0/+1
|
* git_rebase: iterators for operationsEdward Thomson2014-10-261-0/+108
|
* rebase: preload all operationsEdward Thomson2014-10-261-12/+12
|
* rebase: init/open a git_rebase objectEdward Thomson2014-10-263-50/+88
|
* git_rebase_next: provide info about the operationEdward Thomson2014-10-261-17/+34
|
* git_rebase_finish: rewrite notes when finishing rebaseEdward Thomson2014-10-261-1/+93
|
* git_rebase_commit: write HEAD's reflog appropriatelyEdward Thomson2014-10-261-1/+9
|
* Introduce git_rebase_finish to complete a rebaseEdward Thomson2014-10-261-0/+57
|
* git_rebase_next: test that we return GIT_ITEROVEREdward Thomson2014-10-261-0/+50
|
* git_rebase_commit: drop already-picked commitsEdward Thomson2014-10-2611-0/+43
| | | | | | Already cherry-picked commits should not be re-included. If all changes included in a commit exist in the upstream, then we should error with GIT_EAPPLIED.
* Introduce git_rebase_commitEdward Thomson2014-10-261-0/+91
| | | | Commit the current patch of a rebase process.
* git_rebase_next: write conflicts nicely during rebaseEdward Thomson2014-10-261-0/+59
|
* Introduce git_rebase_nextEdward Thomson2014-10-261-0/+59
| | | | | | `git_rebase_next` will apply the next patch (or cherry-pick) operation, leaving the results checked out in the index / working directory so that consumers can resolve any conflicts, as appropriate.
* Introduce git_rebase_abortEdward Thomson2014-10-261-0/+148
| | | | | Abort an in-progress rebase and move the working directory and repository back to the ORIG_HEAD state.
* Introduce git_rebase to set up a rebase sessionEdward Thomson2014-10-26125-0/+495
| | | | | | Introduce `git_rebase` to set up a rebase session that can then be continued. Immediately, only merge-type rebase is supported.
* revwalk::mergebase test: free memoryEdward Thomson2014-10-261-0/+1
|
* submodule test: free submoduleEdward Thomson2014-10-261-0/+1
|
* clone::local test: isalpha -> git__isalphaEdward Thomson2014-10-261-1/+1
|
* config test: clean up memory leakEdward Thomson2014-10-261-0/+1
|
* Clean up some memory leaksEdward Thomson2014-10-261-0/+2
|
* tests: fix leakCarlos Martín Nieto2014-10-271-0/+1
|
* Fix test repo dir not deleted after runningLinquize2014-10-271-1/+1
|
* Merge pull request #2638 from libgit2/cmn/config-refresh-removeEdward Thomson2014-10-243-92/+0
|\ | | | | config: remove the refresh function and backend field
| * config: remove the refresh function and backend fieldcmn/config-refresh-removeCarlos Martín Nieto2014-10-233-92/+0
| | | | | | | | | | | | We have been refreshing on read and write for a while now, so git_config_refresh() is at best a no-op, and might just end up wasting cycles.
* | Merge pull request #2646 from libgit2/cmn/remote-renameEdward Thomson2014-10-242-46/+22
|\ \ | | | | | | remote: accept a repo and name for renaming
| * | remote: accept a repo and name for renamingcmn/remote-renameCarlos Martín Nieto2014-10-242-46/+22
| |/ | | | | | | | | | | | | | | | | | | Remote objects are not meant to be changed from under the user. We did this in rename, but only the name and left the refspecs, such that a save would save the wrong refspecs (and a fetch and anything else would use the wrong refspecs). Instead, let's simply take a name and not change any loaded remote from under the user.
* | Merge pull request #2647 from ethomson/clar_tmpnameEdward Thomson2014-10-241-0/+5
|\ \ | | | | | | clar: use a custom temp directory name
| * | clar: use a custom temp directory nameEdward Thomson2014-10-241-0/+5
| |/
* | remote: delete git_remote_supported_url()cmn/remove-supported-urlCarlos Martín Nieto2014-10-241-20/+0
|/ | | | | | | This function does not in fact tell us anything, as almost anything with a colon in it is a valid rsync-style SSH path; it can not tell us that we do not support ftp or afp or similar as those are still valid SSH paths and we do support that.
* Merge pull request #2622 from libgit2/refresh-config-snapshotCarlos Martín Nieto2014-10-231-1/+14
|\ | | | | Refresh git configuration before looking for the tracking branch redux.
| * Change the length of the file so that the change is picked up.Alan Rogers2014-10-231-2/+2
| |
| * Add a test to make sure a new snapshot has the new value.Alan Rogers2014-10-231-1/+14
| |