This unifies how git subcommands are called,
and allows the command to be augmented based on config.
The test suite doesn't cover all the places where I had to make changes,
but I assert that they are ok from visual inspection,
and I'm on the hook to provide tests for those eventually anyway.
It then adds special-case logic for the git.receive.shallowUpdate config key,
setting it on the git command-line with the `-c foo=bar` syntax,
so if it's set in the gitano config, it gets set in the git config.
If we get many options it would make sense to include.path=config-file,
to avoid potentially creating a command too large to execute,
but that requires caching logic or generating a temp file every time.
We *could* do a more generic thing and set every git.* key set in gitano config,
but I'd rather keep it to a whitelist we're aware of,
since you can badly break a repository if you set config willy-nilly.
Technically git is case-insensitive when handling this config option,
but receive.shallowUpdate is the form that is documented.
Richard Maw (7):
gitano.repository: Add git_command() method
Call git commands through repo:git_command()
gitano.repository.git_command: Handle shallowUpdate config
testing: Extend cloneviassh to accept depth
testing: extend gtt to support pushing
testing: Support checking for the existence of files in repos
testing: Add yarn for shallow pushes
Makefile | 3 ++-
bin/gitano-smart-http.cgi.in | 16 +++++++++-------
lib/gitano/command.lua | 15 ++++++---------
lib/gitano/repocommand.lua | 7 ++-----
lib/gitano/repository.lua | 24 ++++++++++++++++++++++++
plugins/archive.lua | 8 +++-----
testing/03-shallow-push.yarn | 19 +++++++++++++++++++
testing/gitano-test-tool.in | 11 +++++++++--
testing/library.yarn | 11 +++++++++--
9 files changed, 83 insertions(+), 31 deletions(-)
create mode 100644 testing/03-shallow-push.yarn
There's more server-side copy behaviour to test,
but I thought I'd send what I have now while I have time.
There's something a little weird going on with `$GTT serverlocation`
as it wasn't giving me the path with .git suffixed by itself,
but I wasn't sure whether I had time to look at it at the time,
so the fsck check unconditionally adds it for now.
Richard Maw (2):
util.copy_dir: Make more tolerant to DT_UNKNOWN
yarns: Test basic server side copy behaviour
lib/gitano/util.lua | 38 +++++++++++++++++++-------------------
testing/02-commands-copy.yarn | 24 ++++++++++++++++++++++++
testing/library.yarn | 10 ++++++++--
3 files changed, 51 insertions(+), 21 deletions(-)