| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This function is a constructor, so let's name it like one and leave
_create() for the reference functions, which do create/write the
reference.
|
|
|
|
|
|
|
|
|
| |
On a case-insensitive filesystem, we need to deal with case-changing
renames (eg, foo -> FOO) by removing the old and adding the new,
exactly as if we were on a case-sensitive filesystem.
Update the `checkout::tree::can_cancel_checkout_from_notify` test, now
that notifications are always sent case sensitively.
|
| |
|
|\
| |
| | |
Show progress output on fetch for the local transport
|
| |
| |
| |
| |
| |
| | |
We do not currently generate any messages when we're counting the
objects, as might be expected from a local upload-pack. Assert that we
do call the function when working.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
We need these directories to exist so cl_git_mkfile() can create the
files we ask it to.
|
| |
| |
| |
| |
| |
| | |
Path validation may be influenced by `core.protectHFS` and
`core.protectNTFS` configuration settings, thus treebuilders
can take a repository to influence their configuration.
|
| |
| |
| |
| |
| |
| | |
Validate HFS ignored char ".git" paths when `core.protectHFS` is
specified. Validate NTFS invalid ".git" paths when `core.protectNTFS`
is specified.
|
| |
| |
| |
| |
| |
| |
| |
| | |
HFS filesystems ignore some characters like U+200C. When these
characters are included in a path, they will be ignored for the
purposes of comparison with other paths. Thus, if you have a ".git"
folder, a folder of ".git<U+200C>" will also match. Protect our
".git" folder by ensuring that ".git<U+200C>" and friends do not match it.
|
| |
| |
| |
| | |
Validate loose reference names on Win32.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Disallow:
1. paths with trailing dot
2. paths with trailing space
3. paths with trailing colon
4. paths that are 8.3 short names of .git folders ("GIT~1")
5. paths that are reserved path names (COM1, LPT1, etc).
6. paths with reserved DOS characters (colons, asterisks, etc)
These paths would (without \\?\ syntax) be elided to other paths - for
example, ".git." would be written as ".git". As a result, writing these
paths literally (using \\?\ syntax) makes them hard to operate with from
the shell, Windows Explorer or other tools. Disallow these.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When turning UTF-8 paths into UCS-2 paths for Windows, always use
the \\?\-prefixed paths. Because this bypasses the system's
path canonicalization, handle the canonicalization functions ourselves.
We must:
1. always use a backslash as a directory separator
2. only use a single backslash between directories
3. not rely on the system to translate "." and ".." in paths
4. remove trailing backslashes, except at the drive root (C:\)
|
| | |
|
|/ |
|
|
|
|
|
| |
The push cannot be successful if we sent a bad packfile. We should
return an error in that case instead of storing it elsewhere.
|
| |
|
| |
|
|\
| |
| | |
Update clar to e3985dd
|
| | |
|
| | |
|
|/ |
|
|\
| |
| | |
Fix negative ignores withing ignored dirs
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Given
top
!top/foo
in an ignore file, we should not unignore top/foo. This is an
implementation detail of the git code leaking, but that's the behaviour
we should show.
A negation rule can only negate an exact rule it has seen before.
|
|\ \
| | |
| | | |
Adjust the local transport for the common refspec parser
|
| | | |
|
| |/
|/|
| |
| |
| | |
Make it consistent between git_note_create() and git_note_remote() by
putting it after the repository.
|
|\ \
| | |
| | | |
Spelling fixes
|
| | | |
|
|/ / |
|
| | |
|
|\ \
| |/
|/| |
peel: reject bad queries with EPEEL
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There are some combination of objects and target types which we know
cannot be fulfilled. Return EINVALIDSPEC for those to signify that there
is a mismatch in the user-provided data and what the object model is
capable of satisfying.
If we start at a tag and in the course of peeling find out that we
cannot reach a particular type, we return EPEEL.
|
| |
| |
| |
| | |
Valgrind is now clean except for libssl and libgcrypt.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This is a contract that we made in the library and that we need to uphold. The
contents of a blob can never be NULL because several parts of the library (including
the filter and attributes code) expect `git_blob_rawcontent` to always return a
valid pointer.
|
|/
|
|
|
|
|
|
|
|
|
| |
When we fetch twice with the same remote object, we did not properly
clear the connection flags, so we would leak state from the last
connection.
This can cause the second fetch with the same remote object to fail if
using a HTTP URL where the server redirects to HTTPS, as the second
fetch would see `use_ssl` set and think the initial connection wanted to
downgrade the connection.
|
|\
| |
| | |
Fix missing object in tests/resources/crlf by changing the tail commit
|
| | |
|
|\ \
| | |
| | | |
Provide a convenience function `git_remote_push()`
|
| | |
| | |
| | |
| | |
| | | |
If the user does not pass any refspecs to push, try to use those
configured via the configuration or via add_push().
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We have the step-by-step method in the initialization function as we
want to remove references based on the list of references which are
already there, and we can use the convenience function for testing the
main push.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This function, similar in style to git_remote_fetch(), performs all the
steps required for a push, with a similar interface.
The remote callbacks struct has learnt about the push callbacks, letting
us set the callbacks a single time instead of setting some in the remote
and some in the push operation.
|
|\ \ \
| | | |
| | | | |
Fixed active_refspecs field not initialized on new git_remote objects
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When creating a new remote, contrary to loading one from disk,
active_refspecs was not populated. This means that if using the new
remote to push, git_push_update_tips() will be a no-op since it
checks the refspecs passed during the push against the base ones
i.e. active_refspecs. And therefore the local refs won't be created
or updated after the push operation.
|
|\ \ \ \
| | | | |
| | | | | |
push: use the common refspec parser
|