- minimalCodebaseStructure has been further minimized to just `paths/_head`
- `Command.LoadRemoteRootBranch`, `FileCodebase.getRootBranch`, and `Git.pullGitBranch` take a BranchLoadMode argument which dictates whether to fail or silently succeed if the source repo doesn't contain a codebase
- documented an unhelpful crash in createDir
- no-op instead of crash when `copyFromGit` `from` arg doesn't exist
- renamted `writeAllTermsAndTypes` to `syncToDirectory` for readability
- we noticed that relative local git repos aren't resolved correctly (they are resolved relative to the git/codebase staging dir where git commands are executed)
- pushing to bare repos is untested
- added `scripts/test-git.bash` to start collecting git-related tests, but haven't wired it into `.travis.yml`. It could probably also be a regular EasyTest, since it's no longer calling Github APIs.
* wip git url parser & some Git module cleanup
* modern-uri
* trailing whitespace
* dice up the git uri parser for more easily testable implementation
* ipv6 address reference
* add an ipv4 test for `UriParser.parseProtocol`
* remove duplicate test and typo
* add some autocompletion shortcuts for git urls
* clean up gitUrlArg
* partially update `push` and `pull` InputPatterns & docs
* it compiles!
* sometimes even comments can break the build
* missed a couple of `gitIn`s, so command executed in wrong working dir
* delete UriParser.webRepoParser in favor of autocompletes
* bikeshedding the ConfiguredGitUrlIncludesShortBranchHash error message
* cleanup
* simplify push/pull help
* pretty-print reflog entry for `pull` using RemoteRepo.printNamespace
* Transcript :error blocks now.just.expect an error for _any_ of commands, rather than _all_ of them
* Removed confusing and uninformative error message
* io mode transcript
* Deleted transcript
That is when a variable to the context for which there is no guarantee
that `freshenVar` won't return it as a fresh variable, which would be wrong.
In order to make the check more efficient, namely to check only the newly
added variables instead of the whole context, replace uses of the more
general `modifyContext` by more specialized `extendContext` and
`replaceContext`. The latter two know which elements are being added
and check only those.
DataDeclaration.unhashComponent used to make up some RefNamed variables
and simply assumed that they did not appear in the input component.
Such assumption is not captured by the type signature of `unhashComponent`.
To drop the assumption, freshen the made up RefNamed variables appropriately.
Add a test that previously would have failed.
The caller of DataDeclaration.unhashComponent used to invent some variables
which DataDeclaration.unhashComponent then used and assumed to be appropriately fresh.
Instead, let DataDeclaration.unhashComponent invent the variables itself and don't
leave the responsibility to the caller. This makes the caller and the callee
less entangled.
Term.unhashComponent used to make up some RefNamed variables and simply
assumed that they did not appear in the terms of the input component.
Such assumption is not captured by the type signature of `unhashComponent`.
To drop the assumption, freshen the made up RefNamed variables appropriately.
Add a test that previously would have failed.
The caller of Term.unhashComponent used to invent some variables
which Term.unhashComponent then used and assumed to be appropriately fresh.
Instead, let Term.unhashComponent invent the variables itself and don't
leave the responsibility to the caller. This makes the caller and the callee
less entangled.