Commit Graph

10496 Commits

Author SHA1 Message Date
Jongmin Kim
ac3d33df5d New upstream version 0.28.1+dfsg.1 2019-05-12 00:29:21 +09:00
Raju Devidas
6c7cee4230 New upstream version 0.27.7+dfsg.1 2018-12-27 01:36:29 +05:30
Ximin Luo
4b3ec53c78 New upstream version 0.27.4+dfsg.1 2018-08-10 19:43:40 -07:00
Pirate Praveen
eae0bfdcd8 New upstream version 0.27.0+dfsg.1 2018-04-26 18:06:07 +05:30
Russell Sim
dc7f361943 DFSG changes
Remove deps/
2017-07-29 18:38:08 +02:00
Russell Sim
4f895057f3 Imported Upstream version 0.26.0 2017-07-29 15:51:23 +02:00
Edward Thomson
15e1193750 CHANGELOG: document git_filter_init and GIT_FILTER_INIT 2017-06-14 13:31:20 +02:00
Edward Thomson
8296da5f60 Merge pull request #4267 from mohseenrm/master
adding GIT_FILTER_VERSION to GIT_FILTER_INIT as part of convention
2017-06-14 10:49:28 +02:00
Edward Thomson
4e257dab4a Merge pull request #4268 from pks-t/pks/homebrew-dupes-deprecation
travis: replace use of deprecated homebrew/dupes tap
2017-06-14 10:48:04 +02:00
Edward Thomson
953427b379 Merge pull request #4269 from pks-t/pks/tests
Test improvements
2017-06-14 10:47:55 +02:00
Mohseen Mukaddam
a78441bc46 Adding git_filter_init for initializing git_filter struct + unit test 2017-06-13 11:05:40 -07:00
Mohseen Mukaddam
7f7dabdaac adding GIT_FILTER_VERSION to GIT_FILTER_INIT as part of convention 2017-06-13 10:59:25 -07:00
Patrick Steinhardt
a180e7d95e tests: odb: add more low-level backend tests
Introduce a new test suite "odb::backend::simple", which utilizes the
fake backend to exercise the ODB abstraction layer. While such tests
already exist for the case where multiple backends are put together, no
direct testing for functionality with a single backend exist yet.
2017-06-13 11:44:09 +02:00
Patrick Steinhardt
b2e53f3692 tests: odb: implement exists_prefix for the fake backend
The fake backend currently implements all reading functions except for
the `exists_prefix` one. Implement it to enable further testing of the
ODB layer.
2017-06-13 11:43:20 +02:00
Patrick Steinhardt
983e627d10 tests: odb: use correct OID length
The `search_object` function takes the OID length as one of its
parameters, where its maximum length is `GIT_OID_HEXSZ`. The `exists`
function of the fake backend used `GIT_OID_RAWSZ` though, leading to
only the first half of the OID being used when finding the correct
object.
2017-06-13 11:41:29 +02:00
Patrick Steinhardt
c4cbb3b16e tests: odb: have the fake backend detect ambiguous prefixes
In order to be able to test the ODB prefix functions, we need to be able
to detect ambiguous prefixes in case multiple objects with the same
prefix exist in the fake ODB. Extend `search_object` to detect ambiguous
queries and have callers return its error code instead of always
returning `GIT_ENOTFOUND`.
2017-06-13 11:40:05 +02:00
Patrick Steinhardt
95170294a1 tests: core: test initialization of git_proxy_options
Initialization of the `git_proxy_options` structure is never tested
anywhere. Include it in our usual initialization test in
"core::structinit::compare".
2017-06-13 11:35:48 +02:00
Patrick Steinhardt
bee423cc26 tests: network: add missing include for git_repository_new
A newly added test uses the `git_repository_new` function without the
corresponding header file being included. While this works due to the
compiler deducing the correct function signature, we should obviously
just include the function's declaration file.
2017-06-13 11:34:49 +02:00
Patrick Steinhardt
a64532e107 cmake: disable optimization on debug builds
While our debug builds on MSVC platforms already tune the code optimizer
to aid debugging code, all the other platforms still use the default
optimization level. This makes it hard for developers on these platforms
to actually debug code while maintaining his sanity due to optimizations
like inlined code, elided variables etc.

To help this common use case, we can simply follow the MSVC example and
turn off code optimization with "-O0" for debug builds. While it would
be preferable to instead use "-Og" supported by more modern compilers,
we cannot guarantee that this level is available on all supported
platforms.
2017-06-13 11:27:01 +02:00
Patrick Steinhardt
613999534e cmake: set "-D_DEBUG" on non-Windows platforms
In our code base, we have some occasions where we use the "_DEBUG"
preprocessor macro to enable additional code which should not be part of
release builds. While we define this flag on MSVC platforms, it is
guarded by the conditional `WIN32 AND NOT CYGWIN` on other platforms
since 19be3f9e6 (Improve MSVC compiler, linker flags, 2013-02-13). While
this condition can be fulfilled by the MSVC platform, it is never
encountered due to being part of the `ELSE` part of `IF (MSVC)`.

The intention of the conditional was most likely to avoid the
preprocessor macro on Cygwin platforms, but to include it on everthing
else. As such, the correct condition here would be `IF (NOT CYGWIN)`
instead. But digging a bit further, the condition is only ever used in
two places:

1. To skip the test in "core::structinit", which should also work on
   Cygwin.
2. In "src/win32/git2.rc", where it is used to set additional file
   flags. As this file is included in MSVC builds only, it cannot cause
   any harm to set "_DEBUG" on Cygwin here.

As such, we can simply drop the conditional and always set "-D_DEBUG" on
all platforms.
2017-06-13 11:14:53 +02:00
Patrick Steinhardt
e94be4c01c cmake: remove stale comment on precompiled headers
In commit 9f75a9ce7 (Turning on runtime checks when building debug under
MSVC., 2012-03-30), we introduced a comment "Precompiled headers", which
actually refers to no related commands. Seeing that the comment never
had anything to refer to, we can simply remove it here.
2017-06-13 11:11:34 +02:00
Patrick Steinhardt
96d0298921 travis: replace use of deprecated homebrew/dupes tap
The formulae provided by the homebrew/dupes tap are deprecated since at
least April 4, 2017, with formulae having been migrated to
homebrew/core.

Replace the deprecated reference to "homebrew/dupes/zlib" with only
"zlib".
2017-06-13 08:13:48 +02:00
Edward Thomson
2ca088bd2b Merge pull request #4265 from pks-t/pks/read-prefix-tests
Read prefix tests
2017-06-12 22:47:54 +01:00
Edward Thomson
99e40a67c7 Merge pull request #4263 from libgit2/ethomson/config_for_inmemory_repo
Allow creation of a configuration object in an in-memory repository
2017-06-12 21:23:44 +01:00
Edward Thomson
d9914fb7c6 Merge pull request #4266 from libgit2/ethomson/travis-explicit-openssl
travis: install openssl explicitly
2017-06-12 21:22:27 +01:00
Edward Thomson
844e85f21d travis: install openssl explicitly 2017-06-12 20:00:21 +01:00
Edward Thomson
fe9a5dd3ca remote: ensure we can create an anon remote on inmemory repo
Given a wholly in-memory repository, ensure that we can create an
anonymous remote and perform actions on it.
2017-06-12 16:51:05 +01:00
Edward Thomson
2d486781df repository: don't fail to create config option in inmemory repo
When in an in-memory repository - without a configuration file - do not
fail to create a configuration object.
2017-06-12 16:51:04 +01:00
Edward Thomson
9d49a43c71 repository_item_path: return ENOTFOUND when appropriate
Disambiguate error values: return `GIT_ENOTFOUND` when the item cannot
exist in the repository (perhaps because the repository is inmemory or
otherwise not backed by a filesystem), return `-1` when there is a hard
failure.
2017-06-12 16:51:04 +01:00
Patrick Steinhardt
f148258a35 tests: odb: add tests with multiple backends
Previous to pulling out and extending the fake backend, it was quite
cumbersome to write tests for very specific scenarios regarding
backends. But as we have made it more generic, it has become much easier
to do so. As such, this commit adds multiple tests for scenarios with
multiple backends for the ODB.

The changes also include a test for a very targeted scenario. When one
backend found a matching object via `read_prefix`, but the last backend
returns `GIT_ENOTFOUND` and when object hash verification is turned off,
we fail to reset the error code to `GIT_OK`. This causes us to segfault
later on, when doing a double-free on the returned object.
2017-06-12 17:24:53 +02:00
Patrick Steinhardt
6e010bb126 tests: odb: allow passing fake objects to the fake backend
Right now, the fake backend is quite restrained in the way how it
works: we pass it an OID which it is to return later as well as an error
code we want it to return. While this is sufficient for existing tests,
we can make the fake backend a little bit more generic in order to allow
us testing for additional scenarios.

To do so, we change the backend to not accept an error code and OID
which it is to return for queries, but instead a simple array of OIDs
with their respective blob contents. On each query, the fake backend
simply iterates through this array and returns the first matching
object.
2017-06-12 17:24:53 +02:00
Patrick Steinhardt
369cb45fc3 tests: do not reuse OID from backend
In order to make the fake backend more useful, we want to enable it
holding multiple object references. To do so, we need to decouple it
from the single fake OID it currently holds, which we simply move up
into the calling tests.
2017-06-12 17:24:53 +02:00
Patrick Steinhardt
2add34d0fb tests: odb: move fake backend into its own file
The fake backend used by the test suite `odb::backend::nonrefreshing` is
useful to have some low-level tests for the ODB layer. As such, we move
the implementation into its own `backend_helpers` module.
2017-06-12 17:24:53 +02:00
Edward Thomson
9927e9587a Merge pull request #4261 from RogerGee/fix_wait_while_ack
smart_protocol: fix parsing of server ACK responses
2017-06-12 16:01:22 +01:00
Patrick Steinhardt
2ade8fb038 Merge pull request #4264 from libgit2/ethomson/read_prefix
odb_read_prefix: reset error in backends loop
2017-06-12 07:33:41 -07:00
Edward Thomson
cb3010c54a odb_read_prefix: reset error in backends loop
When looking for an object by prefix, we query all the backends so that
we can ensure that there is no ambiguity.  We need to reset the `error`
value between backends; otherwise the first backend may find an object
by prefix, but subsequent backends may not.  If we do not reset the
`error` value then it will remain at `GIT_ENOTFOUND` and `read_prefix_1`
will fail, despite having actually found an object.
2017-06-12 12:56:40 +01:00
Edward Thomson
fb3fc837c6 repository_item_path: error messages lowercased 2017-06-12 11:45:09 +01:00
Edward Thomson
bd6928096d Merge pull request #4262 from libgit2/ethomson/bump-v26
Update version number to 0.26
2017-06-11 12:32:00 +01:00
Edward Thomson
2a3cc403bd Update version number to v0.26 2017-06-11 12:23:34 +01:00
Edward Thomson
a1b4cafde5 changelog: add some final 0.26 changes 2017-06-11 12:21:23 +01:00
Edward Thomson
29ef7d3f3b Merge pull request #4254 from pks-t/pks/changelog-v0.26
CHANGELOG: add various changes introduced since v0.25
2017-06-11 10:58:35 +01:00
Edward Thomson
6f960b553b Merge pull request #4088 from chescock/packfile-name-using-complete-hash
Ensure packfiles with different contents have different names
2017-06-11 10:37:46 +01:00
Edward Thomson
d2c4f7645c Merge pull request #4260 from libgit2/ethomson/forced_checkout_2
Update to forced checkout and untracked files
2017-06-11 09:54:04 +01:00
Edward Thomson
4a0df57411 git_futils_rmdir: only allow EBUSY when asked
Only ignore `EBUSY` from `rmdir` when the `GIT_RMDIR_SKIP_NONEMPTY` bit
is set.
2017-06-10 19:18:57 +01:00
Edward Thomson
83989d70ec checkout: cope with untracked files in directory deletion
When deleting a directory during checkout, do not simply delete the
directory, since there may be untracked files.  Instead, go into
the iterator and examine each file.

In the original code (the code with the faulty assumption), we look to
see if there's an index entry beneath the directory that we want to
remove.   Eg, it looks to see if we have a workdir entry foo and an
index entry foo/bar.txt. If this is not the case, then the working
directory must have precious files in that directory. This part is okay.
The part that's not okay is if there is an index entry foo/bar.txt. It
just blows away the whole damned directory.

That's not cool.

Instead, by simply pushing the directory itself onto the stack and
iterating each entry, we will deal with the files one by one - whether
they're in the index (and can be force removed) or not (and are
precious).

The original code was a bad optimization, assuming that we didn't need
to git_iterator_advance_into if there was any index entry in the folder.
That's wrong - we could have optimized this iff all folder entries are
in the index.

Instead, we need to simply dig into the directory and analyze its
entries.
2017-06-10 19:16:48 +01:00
Patrick Steinhardt
0ef405b3c8 checkout: do not delete directories with untracked entries
If the `GIT_CHECKOUT_FORCE` flag is given to any of the `git_checkout`
invocations, we remove files which were previously staged. But while
doing so, we unfortunately also remove unstaged files in a directory
which contains at least one staged file, resulting in potential data
loss.

This commit adds two tests to verify behavior.
2017-06-10 19:16:08 +01:00
Roger Gee
e141f07996 smart_protocol: fix parsing of server ACK responses
Fix ACK parsing in wait_while_ack() internal function. This patch
handles the case where multi_ack_detailed mode sends 'ready' ACKs. The
existing functionality would bail out too early, thus causing the
processing of the ensuing packfile to fail if/when 'ready' ACKs were
sent.
2017-06-10 11:46:09 -05:00
Patrick Steinhardt
a1510880de CHANGELOG: add various changes introduced since v0.25 2017-06-09 08:43:22 +02:00
Edward Thomson
e476d5288c Merge pull request #4259 from pks-t/pks/fsync-option-rename
settings: rename `GIT_OPT_ENABLE_SYNCHRONOUS_OBJECT_CREATION`
2017-06-08 22:54:30 +02:00
Patrick Steinhardt
6c23704df5 settings: rename GIT_OPT_ENABLE_SYNCHRONOUS_OBJECT_CREATION
Initially, the setting has been solely used to enable the use of
`fsync()` when creating objects. Since then, the use has been extended
to also cover references and index files. As the option is not yet part
of any release, we can still correct this by renaming the option to
something more sensible, indicating not only correlation to objects.

This commit renames the option to `GIT_OPT_ENABLE_FSYNC_GITDIR`. We also
move the variable from the object to repository source code.
2017-06-08 21:40:18 +02:00