gc ---- Invoke git gc on your repository (Takes a repo) ======================================================= The `gc` command is a basic pass-through to the underlying `git gc` being run on the remote repository. Apart from ensuring that the caller has `write` access, to a repository which exists, no other checks are done and any spare arguments are passed through to `git gc`. Using `gc` in the simple case ----------------------------- So the simple case is that a `gitano-admin` runs `gc` on a repository which definitely exists which means they always have the rights to do so. SCENARIO Simple case `gc` usage GIVEN a standard instance WHEN testinstance adminkey runs gc gitano-admin THEN stderr is empty AND stdout is empty FINALLY the instance is torn down We can then ensure that if the repository does not exist, we get a useful error message back: SCENARIO Simple failure case `gc` usage GIVEN a standard instance WHEN testinstance adminkey, expecting failure, runs gc something THEN stdout is empty AND stderr contains repository does not exist FINALLY the instance is torn down Write access checks ------------------- A more complex case involves creating a repository to which a user has no write permissions and trying to get that user to run `gc` on it. SCENARIO Write access checks for `gc` usage GIVEN a standard instance AND testinstance has keys called other WHEN testinstance, using adminkey, adds user other, using testinstance other AND testinstance adminkey runs create testrepo AND testinstance other, expecting failure, runs gc testrepo THEN stdout is empty AND stderr contains Ruleset denied action FINALLY the instance is torn down Passing arguments to `git gc` ----------------------------- Any spare arguments given to `gc` are passed through to `git gc` untouched. We can verify that arguments are passed through by passing a bad argument through and seeing if we get an error message from the underlying `git gc` instance: SCENARIO Passing arguments through to `git gc` GIVEN a standard instance WHEN testinstance adminkey, expecting failure, runs gc gitano-admin --not-valid THEN stdout is empty These are the `git gc` errors AND stderr contains error: unknown option AND stderr contains usage: git gc And this demonstrates that Gitano detected the error properly AND stderr contains Unable to continue FINALLY the instance is torn down