|
b4f5bb07
|
2012-10-23T16:40:51
|
|
Initial implementation of diff rename detection
This implements the basis for diff rename and copy detection,
although it is based on simple SHA comparison right now instead
of using a matching algortihm. Just as `git_diff_merge` can be
used as a post-pass on diffs to emulate certain command line
behaviors, there is a new API `git_diff_detect` which will
update a diff list in-place, adjusting some deltas to RENAMED
or COPIED state (and also, eventually, splitting MODIFIED deltas
where the change is too large into DELETED/ADDED pairs).
This also adds a new test repo that will hold rename/copy/split
scenarios. Right now, it just has exact-match rename and copy,
but the tests are written to use tree diffs, so we should be able
to add new test scenarios easily without breaking tests.
|
|
a1abe66a
|
2012-09-10T12:11:02
|
|
Add config level support in the config API
Added `struct git_config_entry`: a git_config_entry contains the key, the value, and the config file level from which a config element was found.
Added `git_config_open_level`: build a single-level focused config object from a multi-level one.
We are now storing `git_config_entry`s in the khash of the config_file
|
|
f8ede948
|
2012-09-18T14:10:40
|
|
Fix adding variable to config file with no trailing newline
This can occur after a manual modification of a config file.
|
|
8a89aa1f
|
2012-10-22T12:04:48
|
|
Merge pull request #963 from carlosmn/remote-save-autotag
Save the autotag configuration for remotes
|
|
40846f3d
|
2012-10-22T10:51:43
|
|
Merge pull request #1004 from nulltoken/error/GIT_EORPHANEDHEAD
More orphaned head love
|
|
c436ed26
|
2012-10-20T12:09:02
|
|
reset: make git_reset() cope with an orphaned HEAD
|
|
cfa6465c
|
2012-10-22T15:08:09
|
|
blob: do not create temp files in the current path
- make sure temporary streamed blobs are created under the
.git/objects folder and not in the current path, whatever it is.
- do not make the name of the temp file depend on the hintpath.
|
|
11c2a9c6
|
2012-10-19T17:06:07
|
|
Merge pull request #1003 from arrbee/fix-test-core-env
Fix env variable tests with new Win32 path rules
|
|
0d422ec9
|
2012-10-19T15:40:43
|
|
Fix env variable tests with new Win32 path rules
The new Win32 global path search was not working with the
environment variable tests. But when I fixed the test, the new
codes use of getenv() was causing more failures (presumably because
of caching on Windows ???). This fixes the global file lookup to
always go directly to the Win32 API in a predictable way.
|
|
8b05bea8
|
2012-10-19T17:07:39
|
|
errors: deploy GIT_EORPHANEDHEAD usage
|
|
0532e7bb
|
2012-10-19T20:34:33
|
|
branch: allow deletion of branch when HEAD's missing
|
|
c2e43fb1
|
2012-10-18T16:50:55
|
|
diff: workdir diffing in a bare repo returns EBAREREPO
|
|
5912d74c
|
2012-10-18T22:25:27
|
|
revparse: properly handle refnames containing a @
Fix #994
|
|
b2b571ce
|
2012-10-18T19:05:24
|
|
fetch: declare variables at the top of the block
|
|
f0d2ddbb
|
2012-10-18T04:31:03
|
|
remote: support fetch cancelation
Introduce git_remote_stop() which sets a variable that is checked by
the fetch process in a few key places. If this is variable is set, the
fetch is aborted.
|
|
4c47a8bc
|
2012-10-17T14:14:51
|
|
Merge pull request #968 from arrbee/diff-support-typechange
Support TYPECHANGE records in status and adjust checkout accordingly
|
|
52a61bb8
|
2012-10-17T14:10:23
|
|
Fix minor bugs
Fixed no-submodule speedup of new checkout code. Fixed missing
final update to progress (which may go away, I realize). Fixed
unused structure in header and incorrect comment.
|
|
6012e868
|
2012-10-17T11:55:26
|
|
Merge pull request #972 from PaulThompson/separate_strarray
Separated git_strarray from common.h. Added doxy comments.
|
|
e48bb71b
|
2012-10-17T10:44:38
|
|
Skip submodule checkout pass if no submodules
Skip the third pass of checkout (where submodules are checked out)
if the earlier passes found no submodules to be checked out.
|
|
b4491b99
|
2012-10-16T16:18:21
|
|
Incremental improvements to pack-objects logic
Incorporate feedback for incr. improvements to pack-objects
|
|
03452b34
|
2012-10-16T10:54:30
|
|
Merge pull request #987 from pwkelley/pthread_cond
Support pthread_cond_* on Win32
|
|
18217e7e
|
2012-10-16T19:34:29
|
|
test: Don't be so picky with failed lookups
Not found means not found, and the other way around.
|
|
5e4f2b5f
|
2012-10-16T13:18:45
|
|
Support pthread_cond_* on Win32
|
|
a8918418
|
2012-10-16T17:58:19
|
|
config: also free the XDG buffer
|
|
52748f7b
|
2012-10-16T08:36:55
|
|
Merge pull request #952 from csware/config-locations
Config location fixes
|
|
9e37305a
|
2012-10-16T08:34:28
|
|
Merge pull request #984 from arrbee/fix-fnmatch-and-ignore
Fix single file ignores
|
|
71b79a0a
|
2012-10-15T15:24:50
|
|
Merge pull request #982 from nulltoken/clone/no-checkout
clone: Explicit support of no-checkout option
|
|
52032ae5
|
2012-10-15T12:48:43
|
|
Fix single-file ignore checks
To answer if a single given file should be ignored, the path to
that file has to be processed progressively checking that there
are no intermediate ignored directories in getting to the file
in question. This enables that, fixing the broken old behavior,
and adds tests to exercise various ignore situations.
|
|
d5a51910
|
2012-10-11T13:39:53
|
|
Import DOS fix for fnmatch
Because fnmatch uses recursion, there were some input sequences
that cause seriously degenerate behavior. This imports a fix
that imposes a max recursion limiter to avoid the worst of it.
|
|
824d5e4d
|
2012-10-11T11:58:00
|
|
Always use internal fnmatch, not system
|
|
68206c54
|
2012-10-13T21:00:45
|
|
test: fix some memory leaks
|
|
fa5d94a0
|
2012-10-13T20:51:57
|
|
reset: prevent hard reset in a bare repository
|
|
c4f68b32
|
2012-10-15T07:06:22
|
|
clone: fix detection of remote HEAD
|
|
4d968f13
|
2012-10-15T06:12:57
|
|
clone: Explicit support of no-checkout option
|
|
7ae5ab56
|
2012-10-15T16:35:10
|
|
Fix leak in the tests
Also introduce the slective ref trimming promised but also missed in
the previous commit.
|
|
47f44b6e
|
2012-10-15T13:51:25
|
|
refs: loosen the OID parsing
We used to require loose references to contain only an OID (possibly
after trimming the string). This is however not enough for letting us
lookup FETCH_HEAD, which can have a lot of content after the initial
OID.
Change the parsing rules so that a loose refernce must e at least 40
bytes long and the 41st (if it's there) must be accepted by
isspace(3). This makes the trim unnecessary, so only do it for
symrefs. This fixes #977.
|
|
9d9288f4
|
2012-10-14T12:29:05
|
|
Fix buffer overrun in git_buf_put_base64
|
|
62993b61
|
2012-10-11T14:08:32
|
|
branches: propagate EEXISTS upon creation
|
|
b46708aa
|
2012-10-11T23:04:08
|
|
Separated git_strarray from common.h. Added doxy comments.
|
|
3548fcf5
|
2012-10-11T14:00:26
|
|
refs: propagate EEXISTS upon renaming
|
|
9206976f
|
2012-10-10T15:00:32
|
|
Merge pull request #971 from arrbee/base64-encoder
Add git_buf_put_base64 to buffer API
|
|
aeba5e17
|
2012-10-10T23:55:03
|
|
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.
|
|
2d3579be
|
2012-10-10T14:54:31
|
|
Add git_buf_put_base64 to buffer API
|
|
0cf49e10
|
2012-10-09T21:49:48
|
|
fixup! gsoc-pack-objects WIP
Use khash instead of git.git's hashing algorithm.
|
|
0a32dca5
|
2012-08-19T22:26:32
|
|
gsoc-pack-objects WIP
|
|
ec1d42b7
|
2012-08-19T22:22:07
|
|
Add diff-delta code from git.git
|
|
e3f8d58d
|
2012-08-14T23:07:54
|
|
indexer: do not require absolute path
|
|
fa16a6ec
|
2012-08-01T11:35:26
|
|
Enable pthread condition vars
|
|
2f05339e
|
2012-07-10T08:53:05
|
|
Add git_tag_foreach
|
|
edca6c8f
|
2012-07-01T19:44:22
|
|
git_odb_object_free: don't segfault w/ arg == NULL
|
|
4bc1a30f
|
2012-06-10T22:04:24
|
|
util: add git__compress()
|
|
0d64bef9
|
2012-10-05T15:56:57
|
|
Add complex checkout test and then fix checkout
This started as a complex new test for checkout going through the
"typechanges" test repository, but that revealed numerous issues
with checkout, including:
* complete failure with submodules
* failure to create blobs with exec bits
* problems when replacing a tree with a blob because the tree
"example/" sorts after the blob "example" so the delete was
being processed after the single file blob was created
This fixes most of those problems and includes a number of other
minor changes that made it easier to do that, including improving
the TYPECHANGE support in diff/status, etc.
|
|
95f5f1e6
|
2012-10-02T13:57:15
|
|
Cleanup TYPECHANGE support
This is just some cleanup code, rearranging some of the checkout
code where TYPECHANGE support was added and adding some comments
to the diff header regarding the constants.
|
|
fbec2fb9
|
2012-09-28T14:32:33
|
|
Fix checkout to know about TYPECHANGE diffs
|
|
bc16fd3e
|
2012-09-28T13:40:02
|
|
Introduce status/diff TYPECHANGE flags
When I wrote the diff code, I based it on core git's diff output
which tends to split a type change into an add and a delete. But
core git's status has the notion of a T (typechange) flag for a
file. This introduces that into our status APIs and modifies the
diff code so it can be forced to not split type changes.
|
|
fade21db
|
2012-09-28T13:39:34
|
|
Improve error propogation in checkout
|
|
21e0d297
|
2012-10-09T11:45:50
|
|
Merge pull request #967 from arrbee/diff-submodule-tests-and-fixes
Diff submodule tests and fixes
|
|
aa4437f6
|
2012-10-09T00:51:43
|
|
Fix compiler warnings
* tests-clar/status: remove an unused variable
* clone: fix -Wmaybe-uninitialized warning
|
|
9adfa7d1
|
2012-10-08T15:25:44
|
|
Merge pull request #949 from nulltoken/topic/deploy_repository_set_head
Deploy git_repository_set_head()
|
|
5d1308f2
|
2012-10-08T15:19:00
|
|
Add test for diffs with submodules and bug fixes
The adds a test for the submodule diff capabilities and then
fixes a few bugs with how the output is generated. It improves
the accuracy of OIDs in the diff delta object and makes the
submodule output more closely mirror the OIDs that will be used
by core git.
|
|
dfbff793
|
2012-10-08T15:14:12
|
|
Fix a few diff bugs with directory content
There are a few cases where diff should leave directories in
the diff list if we want to match core git, such as when the
directory contains a .git dir. That feature was lost when I
introduced some of the new submodule handling.
This restores that and then fixes a couple of related to diff
output that are triggered by having diffs with directories in
them.
Also, this adds a new flag that can be passed to diff if you
want diff output to actually include the file content of any
untracked files.
|
|
543864b6
|
2012-10-08T15:21:47
|
|
Merge pull request #940 from scunz/diff_sm
Diff: Show submodule diff
|
|
edb456c3
|
2012-10-08T16:32:43
|
|
Fix a bug where ignorecase wasn't applied to ignores
|
|
bf0e62a2
|
2012-10-07T12:50:18
|
|
clone: fix cloning of empty repository
|
|
d280c71b
|
2012-09-26T19:22:21
|
|
clone: leverage refspec transform
|
|
3e012fca
|
2012-09-26T19:15:11
|
|
refspec: introduce git_refspec_transform_l()
|
|
70edc1b0
|
2012-09-26T11:05:12
|
|
clone: align type casing with convention
|
|
4ba23be1
|
2012-10-06T12:20:13
|
|
branch: deploy git_branch_is_head()
|
|
0c78f685
|
2012-10-06T10:41:53
|
|
branch: introduce git_branch_is_head()
|
|
f3cc7834
|
2012-09-22T12:51:34
|
|
refs: deploy git_repository_set_head() usage
|
|
7eca3c56
|
2012-09-22T12:50:18
|
|
clone: deploy git_repository_set_head() usage
|
|
a147408f
|
2012-09-22T12:47:17
|
|
reset: make reset rely on git_repository_head()
|
|
096d9e94
|
2012-10-07T21:00:46
|
|
remote: use constants for well-known names
|
|
74a24005
|
2012-09-21T10:28:20
|
|
refs: use constants for well-known names
|
|
acd17006
|
2012-10-07T11:19:19
|
|
remote: only keep a weak pointer in update_tips
The reference is only needed inside the function. We mistakenly
increased the reference counter causing the ODB not to get freed and
leaking descriptors.
|
|
22935b06
|
2012-10-07T10:20:23
|
|
protocol: don't store flushes
Storing flushes in the refs vector doesn't let us recognize when the
remote is empty, as we'd always introduce at least one element into
it. These flushes aren't necessary, so we can simply ignore them.
|
|
1dca8510
|
2012-10-05T13:44:18
|
|
Diff: Do not try to calculate an oid for a GITLINK.
We don't have anything useful that we could do with that oid anyway (We
need to query the submodule for the HEAD commit instead).
Without this, the following code creates the error "Failed to read
descriptor: Is a directory" when run against the submod2 test-case:
const char* oidstr = "873585b94bdeabccea991ea5e3ec1a277895b698";
git_tree* tree = resolve_commit_oid_to_tree(g_repo, oidstr);
git_diff_list* diff = NULL;
cl_assert(tree);
cl_git_pass(git_diff_workdir_to_tree(g_repo, NULL, tree, &diff));
|
|
1686641f
|
2012-10-05T13:03:22
|
|
Extract submodule logic out of diff_output.c:get_workdir_content
|
|
7e57d250
|
2012-09-18T23:43:23
|
|
Diff: teach get_workdir_content to show a submodule as text
1. teach diff.c:maybe_modified to query git_submodule_status for the
modification state of a submodule. According to the
git_submodule_status docs, it will filter for to-ignore states
already.
2. teach diff_output.c:get_workdir_content to check the submodule status
again and create a line like:
Subproject commit <SHA-1>\n
or
Subproject comimt <SHA-1>-dirty\n
like git.git does.
|
|
9ce44f1a
|
2012-09-18T22:35:09
|
|
Diff: teach get_blob_content to show a submodule as text
diff_output.c:get_blob_content used to try to read the submodule commit
as a blob in the superproject's odb. Of course it cannot find it and
errors out with GIT_ENOTFOUND, implcitly terminating the whole diff
output.
This patch teaches it to create a text that describes the submodule
instead. The text looks like:
Subproject commit <SHA1>\n
which is what git.git does, too.
|
|
1a5cd26b
|
2012-10-05T13:02:35
|
|
Fix minor whitespace issue
|
|
d0b452db
|
2012-10-02T11:08:30
|
|
Merge pull request #932 from ben/clone_pack_race
ODB: re-load packfiles on failed lookup
|
|
eada0762
|
2012-10-02T10:45:40
|
|
Merge pull request #939 from pwkelley/ignorecase
Support for the core.ignorecase flag
|
|
997579be
|
2012-10-02T17:55:29
|
|
Move win32 specific stuff to win32/findfile.c
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
4258d483
|
2012-10-02T17:21:07
|
|
Rename xdr to xdg
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
8b3de0b6
|
2012-10-02T17:16:22
|
|
Optimized win32_nextpath
Based on a suggestion by Russell Belfer.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
Signed-off-by: Russell Belfer <rb@github.com>
|
|
c648d4a8
|
2012-10-02T12:05:09
|
|
remote: don't auto-follow tags on an unamed remote
An unnamed remote is used for commands like
git fetch git://host/repo
where no tags should be downloaded. Make this the default.
|
|
218c88a9
|
2012-10-02T11:48:02
|
|
remote: set/unset the autotag setting on save
Make the configuration option match the configured behavior when
saving a remote.
|
|
8bc5cacc
|
2012-10-01T13:57:32
|
|
Merge pull request #961 from arrbee/win64-cleanups
Win64 cleanups
|
|
7c411fd9
|
2012-10-01T12:32:55
|
|
Fix up more Win64 compile warnings
|
|
93b5fabc
|
2012-10-01T17:59:04
|
|
threads: Assert that the global state is initialized
|
|
9063be1f
|
2012-10-01T17:33:05
|
|
remote: Fix mid-block declaration
|
|
3230a44f
|
2012-09-30T10:56:06
|
|
remote: support downloading all tags
Also honor remote.$name.tagopt = --tags.
|
|
eb0bd77a
|
2012-09-29T22:50:33
|
|
remote: use the refspec functions to parse, instead of rolling our own
The local function works for simple cases, but we shouldn't reinvent
the wheel just for us.
|
|
f70e466f
|
2012-09-27T11:58:35
|
|
remote: add accessors for the autotag setting
|
|
a37ddf7e
|
2012-09-16T03:36:03
|
|
remote: create tags if we have them
Together with include-tag, this make us behave more like git. After a
fetch, try to create any tags the remote told us about for which we
have objects locally.
|
|
24f2f94e
|
2012-09-15T08:07:24
|
|
fetch: use the include-tag capability
This tells the remote to send us any tags that point to objects that
we are downloading.
|
|
c1281493
|
2012-09-30T11:37:53
|
|
refs: propagate EEXISTS
Indicate whether the error comes from the ref already existing or
elsewhere. We always perform the check and this lets the user write
more concise code.
|
|
3665ba8e
|
2012-09-27T12:04:41
|
|
refspec: add git_refspec__free, remove git_refspec_parse
The latter shouldn't be exposed and isn't used, git_refspec__parse
supersedes it.
Fix a leak in the refspec tests while we're at it.
|
|
19aa8416
|
2012-09-29T21:26:32
|
|
Silence MinGW warnings
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|