When doing something like let index = Repository::open("foo")?.index()?;, the resulting index can't do very much since many of its methods will fail (with errors like This operation is not allowed against bare repositories). This adds some documentation about this behavior.
There are some alternate solutions here, but I didn't find them very palatable:
Add a lifetime to Index. This might be a little awkward (use 'static for non-repo Indexes?).
Add a lifetime wrapper that only applies to Repository::index(). This I think would make the Index a little more awkward to use, and seems a little overkill.
Add checks in Index methods for a NULL git_index_owner() that need an owner, and provide a better error message.
There are a few other "owned" types, including git_odb, git_refdb, and git_config. However, those don't seem to have the same issues as git_index, since they are mostly revolved around caching.
I think adding a lifetime is still an option, but I figure this would be a good solution for now.
When doing something like
let index = Repository::open("foo")?.index()?;
, the resultingindex
can't do very much since many of its methods will fail (with errors likeThis operation is not allowed against bare repositories
). This adds some documentation about this behavior.There are some alternate solutions here, but I didn't find them very palatable:
Index
. This might be a little awkward (use'static
for non-repo Indexes?).Repository::index()
. This I think would make theIndex
a little more awkward to use, and seems a little overkill.Index
methods for a NULLgit_index_owner()
that need an owner, and provide a better error message.There are a few other "owned" types, including
git_odb
,git_refdb
, andgit_config
. However, those don't seem to have the same issues asgit_index
, since they are mostly revolved around caching.I think adding a lifetime is still an option, but I figure this would be a good solution for now.
closes #897