src-d / go-git

Project has been moved to: https://github.com/go-git/go-git
https://github.com/go-git/go-git
Apache License 2.0
4.9k stars 540 forks source link

NewCommitPreorderIter Fails with `object not found` When iterating over incomplete history. #1151

Open NonLogicalDev opened 5 years ago

NonLogicalDev commented 5 years ago

In remote.go in getHaves, getHavesRef fails with object not found error when iterating over incomplete history.

This causes Fetch to fail under certain circumstances, such as (at least) when fetching remotes with unrelated histories.

This likely happens because commits are processed in Preorder and once it reaches the last commit fetched with a given Depth, it fails for find its parent.

Suggestion Short Term

Ignore object not found error during a fetch operation

Suggestion Long Term

Add a terminal empty commit after fetch with a certain depth, to signify that no further commits can be reached. This will guarantee that object not found error if it happens, happens because of corrupt data as opposed to truncated history.

NonLogicalDev commented 5 years ago

Seems like there is a related Issue #1143