summaryrefslogtreecommitdiff
path: root/tests/path
Commit message (Collapse)AuthorAgeFilesLines
* Attempt at fixing the MingW64 compilationlhchavez2019-01-061-1/+1
| | | | It seems like MingW64's size_t is defined differently than in Linux.
* tests: path: only compile test_canonicalize on Win32 platformsPatrick Steinhardt2018-11-281-5/+2
| | | | | | | | The function `test_canonicalize` is only used on Win32 platforms. It will thus result in an unused function warning if these warnings are enabled and one is on a platform different than Win32. Fix the issue by only compiling in the function on Win32 platforms.
* win32: more tests for `git_win32_remove_path`Edward Thomson2018-10-191-0/+28
|
* win32: rename `git_win32__canonicalize_path`Edward Thomson2018-10-191-5/+5
| | | | | | | | | | | The internal API `git_win32__canonicalize_path` is far, far too easily confused with the internal API `git_win32_path_canonicalize`. The former removes the namespace prefix from a path (eg, given `\\?\C:\Temp\foo`, it returns `C:\Temp\foo`, and given `\\?\UNC\server\share`, it returns `\\server\share`). As such, rename it to `git_win32_path_remove_namespace`. `git_win32_path_canonicalize` remains unchanged.
* Fix comment style and update test codeGabriel DeBacker2018-10-041-4/+7
|
* Fix issue with path canonicalization for Win32 pathsGabriel DeBacker2018-09-301-0/+18
|
* Merge pull request #4436 from pks-t/pks/packfile-stream-freeEdward Thomson2018-06-111-3/+3
|\ | | | | pack: rename `git_packfile_stream_free`
| * Convert usage of `git_buf_free` to new `git_buf_dispose`Patrick Steinhardt2018-06-101-3/+3
| |
* | path: unify `git_path_is_*` APIsPatrick Steinhardt2018-06-011-5/+5
|/ | | | | | | | | | | | | | | | Right now, there's quite a lot of different function calls to determine whether a path component matches a specific name after normalization from the filesystem. We have a function for each of {gitattributes, gitmodules, gitignore} multiplicated with {generic, NTFS, HFS} checks. In the long time, this is unmaintainable in case there are e.g. new filesystems with specific semantics, blowing up the number of functions we need to implement. Replace all functions with a simple `git_path_is_gitfile` function, which accepts an enum pointing out the filename that is to be checked against as well as the filesystem normalizations to check for. This greatly simplifies implementation at the expense of the caller having to invoke a somewhat longer function call.
* path: hand-code the zero-width joiner as UTF-8Carlos Martín Nieto2018-05-241-1/+5
|
* path: reject .gitmodules as a symlinkCarlos Martín Nieto2018-05-232-197/+204
| | | | | | | | Any part of the library which asks the question can pass in the mode to have it checked against `.gitmodules` being a symlink. This is particularly relevant for adding entries to the index from the worktree and for checking out files.
* path: accept the name length as a parameterCarlos Martín Nieto2018-05-221-4/+4
| | | | | We may take in names from the middle of a string so we want the caller to let us know how long the path component is that we should be checking.
* path: hide the dotgit file functionsCarlos Martín Nieto2018-05-181-2/+0
| | | | | These can't go into the public API yet as we don't want to introduce API or ABI changes in a security release.
* path: add a function to detect an .gitmodules fileCarlos Martín Nieto2018-05-181-0/+110
| | | | | | | | Given a path component it knows what to pass to the filesystem-specific functions so we're protected even from trees which try to use the 8.3 naming rules to get around us matching on the filename exactly. The logic and test strings come from the equivalent git change.
* index: allow read of index w/ illegal entriesEdward Thomson2016-02-171-6/+6
| | | | | | | | | Allow `git_index_read` to handle reading existing indexes with illegal entries. Allow the low-level `git_index_add` to add properly formed `git_index_entry`s even if they contain paths that would be illegal for the current filesystem (eg, `AUX`). Continue to disallow `git_index_add_bypath` from adding entries that are illegal universally illegal (eg, `.git`, `foo/../bar`).
* win32: further cleanups for 8.3 disablingEdward Thomson2015-02-031-5/+3
|
* win32: cleanup 8.3 disabled testsEdward Thomson2015-02-031-16/+7
|
* Fix test failures when 8.3 is disabledLinquize2015-01-311-3/+17
|
* git_path_join_unrooted: return base lenEdward Thomson2015-01-201-0/+47
| | | | | | | The documentation for `git_path_join_unrooted` states that the base length will be returned, so that consumers like checkout know where to start creating directories instead of always creating directories at the directory root.
* Add more Windows reserved filenamesLinquize2014-12-191-0/+13
|
* COM0 is a valid path, although Windows Explorer does not allow to create thisLinquize2014-12-191-0/+2
|
* Introduce core.protectHFS and core.protectNTFSEdward Thomson2014-12-171-3/+19
| | | | | | Validate HFS ignored char ".git" paths when `core.protectHFS` is specified. Validate NTFS invalid ".git" paths when `core.protectNTFS` is specified.
* checkout: disallow bad paths on HFSEdward Thomson2014-12-161-1/+30
| | | | | | | | 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.
* checkout: disallow bad paths on win32Edward Thomson2014-12-162-0/+218
| | | | | | | | | | | | | | | 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.
* win32: use NT-prefixed "\\?\" pathsEdward Thomson2014-12-161-0/+190
| | | | | | | | | | | | 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:\)
* path: Fix `git_path_walk_up` to work with non-rooted pathsThe rugged tests are fragile2014-09-171-2/+0
|
* Introduce git_path_make_relativeEdward Thomson2014-09-021-0/+55