Clone
30
Libgit2 v1.0 Release Plan
Edward Thomson edited this page 2014-01-14 10:37:52 -08:00

Must Do

These are things without which we will not ship v1.0

  • Network - See if we can unify the push and fetch refspec setting (why use a specific push function when you can already add the refspecs to the remote in-memory?) #1125 is somewhat related.
  • Network - Coordinate with git-core about what --tags is supposed to mean (see current threads from mhagger)
  • Network - https://github.com/libgit2/libgit2/pull/1199
  • ODB - Allow removal of objects from the odb (for backends that can).
  • Submodules - Fix bugs with using .git/config instead of .gitmodules and writing to .git/modules/SM/config when needed
  • Diff - Add option for getting unmerged entries if index contains unmerged items

Optional

These are things we would like to get to but will not block 1.0 being shipped

  • Status - Add conflict details to status.
  • SSH - Add support for accessing the hostkey; do something about ssh config. Maybe we should explicitly rely on libssh2 and give access to the underlying objects so the user can use libssh2 functions directly?
  • [MAYBE] Network - Figure out if we want to support stuff like remote.*.prune which recently landed in git.
  • [MAYBE] Network - Support for url replacements? (like url.<base>.insteadOf)
  • [MAYBE] Misc - Support for looking up arbitrary commit header fields
  • [MAYBE] Diff - Word diff
  • [MAYBE] Diff - Histogram diff
  • [MAYBE] Diff - Combined diff format. (I guess this one will involve API changes.)

Code investigations

  • Why does src/netops.c:gitno_connection_data_from_url() discard the path which gitno_extract_url_parts gave it?

Done

These are things that started on this list but have been D O N E

  • [DONE] References - Let's stop pretending that refs and the reflog are two different things. Change the refdb backend to know to update a ref and reflog atomically. See #1920 comment
  • [DONE] Network - Always create FETCH_HEAD which we currently skip if there are no configured refspecs (we should download the remote's HEAD then and store it in FETCH_HEAD. We also seem to recreate the file for each refspec, when we should put in all of them. See #1914
  • [DONE] Network - Better refspec list handling. Currently it's annoying and not all that useful. Do like jgit and use something like set_refspecs(char *list[])? See #1914
  • [DONE] Network - git_remote_list() is stupid. Return the list instead.
  • [DONE] References - Get rid of git_branch_foreach(). It's already using the iterator interface, so if we do want it, let's just make it a multiplexing iterator. #1938
  • [DONE] Misc - Have more sensible names for the streaming indexer functions, now that it's the only one we have. Remove _stream_ everywhere, and probably rename _add to _append. _finalize should probably be named _commit or such. 'Finalize' has different meanings in OO languages. See #1918
  • [DONE] Network - Support multi_ack_detailed and thin packs, as Google Code won't talk to us unless we do. See #1919 for multi_ack_detailed.
  • [DONE] SSH - More descriptive names for the functions and auth types instead of the confusing key+password vs key+own-crypto divide- [DONE] Merge - Ship it
  • [DONE] Blame - Ship it
  • [DONE] Misc - Correctly handle core.precomposeunicode, which is important for non-ASCII filenames on HFS+
  • [DONE] Revwalk - It uses recursion to mark commits as uninteresting, which can blow the stack. See #1223 and a proposed fix at #1791
  • [DONE] Config - Support for config includes #1833
  • [DONE] Config - The XDG/global tests are fragile and currently fail if the user running the tests has a config in the XDG location. These tests need to be isolated better.
  • [DONE] Network - Have the indexer check what the hash for a packfile should be.
  • [DONE] Misc - Ship some version of public filtering API
  • [DONE] Misc - Check if we correctly ref-count the memory windows. See e.g. #1272
  • [DONE] Diff - Patience diff
  • [DONE] Diff - Minimal diff