got:
- Teach 'got merge' to merge changes into an arbitrary subdirectory
  of the work tree. This would be nice for merging vendor branches.
  Say you have a branch 'llvm-12' which intially contains a 12.0
  release tree as published by the LLVM project, added to the repository
  with a command such as 'got import -b llvm-12'. On the main branch we
  would want to merge files from the llvm-12 branch into /usr/src/gnu/llvm
  instead of the root directory checked out at /usr/src.
  The next LLVM release 12.1 would later be committed onto the llvm-12
  branch and then merged into main at /usr/src/gnu/llvm in the same way.
- Add an option where 'got cherrypick' and 'got backout' will immediately
  create a new commit with a log-message based on the original log message.
  This must require an up-to-date and clean work tree to avoid unrelated
  changes from getting mixed in. Perform an implicit work tree base-commit
  bump after committing, like 'got rebase' and 'got histedit' do it.
- When a clone fails the HEAD symref will always point to "refs/heads/main"
  (ie. the internal default HEAD symref of Got). Resuming a failed clone with
  'got fetch' is supposed to work. To make this easier, if the HEAD symref
  points to a non-existent reference it should be updated by 'got fetch'
  to match the HEAD symref sent by the server.

network protocol:
- add http(s) transport with libtls, speaking the two Git HTTP protocols
  (both "dumb" and "smart" need to work) via got-fetch-pack, or a new helper
  like got-fetch-http; it is fine if HTTP remains a fetch-only protocol, and
  works only against servers which don't require authentication for fetches;
  anything beyond this would require a full-featured HTTP client (Git uses
  libcurl, which we cannot use as it is not in the OpenBSD base system)

tog:
- make 'tog log' respond to key presses while 'loading...' history; loading
  can be slow for paths in a deep history if the path has not been changed
  very often, and 'tog log' blocks far too long in this case
- make it possible to view the contents of tag objects
- verify signed tag objects

gotwebd:
- reply with a non-200 reply code when an error occur
- fix COMMITS page for path that were deleted and/or re-added to the
  repository. One way would be not to let the commit graph filter paths.
  As an additional optimization we could keep a tailq or the object-id
  set for everything traversed in the repo to have fast reverse-lookups.
  (has the additional requirement to invalidate it when the reference
  timestamp changes)
- run-time changes of addresses on interfaces are being ignored by gotwebd
- perhaps "bind interface" should be removed in favour of using only IP
  addresses? This makes the address family selection explicit and avoids
  having to monitor interfaces for dynamic address changes.

gotd:
- add server-side support for 'got send -d'
- ensure all error messages are propagated to clients before disconnecting,
  there are probably still some cases where such error reporting is skipped
- client connection timeout handling needs to be checked by regress tests,
  and is likely in need of improvement
- implement stress-tests to observe and fix misbehaviour under load
- listener's fd-reserve limit needs to be reviewed and perhaps adjusted 
- implement pre-commit checks (in lieu of hook scripts):
  1. deny branch history rewriting ('got send -f') via gotd.conf
  2. allow/deny creation/deletion of references via gotd.conf
  3. deny modifications within a given reference namespace via gotd.conf
  4. entirely hide a given reference namespace from clients via gotd.conf
  5. allow/deny addition of binary files to a repo via gotd.conf
  6. enforce a particular blob size limit via gotd.conf
- implement post-commit-event libexec handlers (in lieu of hook scripts):
  1. commit email notification, plaintext smtp to localhost port 25
  2. general-purpose HTTP(s) GET/POST request as commit notification,
     should use a format string to encode commit-info in the request URL
  3. perform the equivalent of 'got send' to another repository
- keep track of available repository disk space and fail gracefully when
  uploaded pack files would fill up the disk too much, keeping a reserve

gotadmin:
- teach 'gotadmin cleanup' to remove redundant pack files
- add support for generating git-fast-export streams from a repository
- add support for importing git-fast-export streams into a repository
