Vars are usually used for constants in Clojure, like this:
```
(def pi 3.1415926)
```
That being said, I'm throwing away from the compulsion to put every primitive literal in a constant. Here's why:

1. If the constant is short or identical to the string it wraps, then: a) it is likely to collide with a useful function that may be implemented now or in the future. Note that some namespaces' symbols are always imported using `:use` which makes collisions more likely b) it is _harder_ to refactor the name later because grepping for the var will reveal use of the symbol in docstrings and local variables, while grepping for the String literal finds exactly what we're looking for.
2. If the constant is long, like `(def hesobase-dir-peer "peer")` , then the code is less readable because it takes more work to mentally associate the String with what is written in the docstring (the hesobase spec), and what you may see in the repo if you are viewing it without Hesokuri. The code also will require more line breaks.
3. (regarding things like `update-ref` and `init --bare`) these are part of Git's public API and will never change, we protect against typos with unit testing, and forking processes is error-prone anyway even if there are no typos (the arguments could be out-of-order or we could forget to pass an argument altogether)
4. Idiomatic Clojure code uses maps where the keys are keywords that are not stored in constants, even though this would protect against typos. Protecting against typos is the only benefit I'll admit to, since a typo in a string literal will be revealed upon unit testing, whereas a typo in referring to a var will be revealed during compilation. You're welcome to make a pull request if you still think the code can be improved.