update
This commit is contained in:
parent
30ca7805d6
commit
6bbbe6fa5d
1 changed files with 19 additions and 14 deletions
|
@ -111,23 +111,28 @@ be parsed from git fsck output, but for eg blobs, the commits need to
|
||||||
be walked to walk the trees, to find trees that refer to the blobs.
|
be walked to walk the trees, to find trees that refer to the blobs.
|
||||||
|
|
||||||
For each branch that is affected, look in the reflog and/or `git log
|
For each branch that is affected, look in the reflog and/or `git log
|
||||||
$branch` to find the last good change that predates all broken commits. (If
|
$branch` to find the last good commit that predates all broken commits. (If
|
||||||
the head commit of a branch is broken, git log is not going to show
|
the head commit of a branch is broken, git log is not going to show
|
||||||
anything useful, but the reflog can be used to find past refs for the
|
anything useful, but the reflog can be used to find past refs for the
|
||||||
branch -- have to first delete the .git/HEAD file if it points to the
|
branch -- have to first delete the .git/HEAD file if it points to the
|
||||||
broken ref.)
|
broken ref.)
|
||||||
|
|
||||||
Reset the branch to the last good change. For the head branch, this will
|
The basic idea then is to reset the branch to the last good commit
|
||||||
|
that was found for it. (Or if no good commit was found, reset the branch to
|
||||||
|
a synthetic commit of an empty tree.) The details of how to do that
|
||||||
|
depends on the branch:
|
||||||
|
|
||||||
|
* For the HEAD branch, can just reset it. This will
|
||||||
leave git showing any changes made since then as staged in the index and
|
leave git showing any changes made since then as staged in the index and
|
||||||
uncommitted. Or if the index is missing/corrupt, any files in the tree will
|
uncommitted. Or if the index is missing/corrupt, any files in the tree will
|
||||||
show as modified and uncommitted. User (or git-annex assistant) can then
|
show as modified and uncommitted. User (or git-annex assistant) can then
|
||||||
commit as appropriate.
|
commit as appropriate. Print appropriate warning message.
|
||||||
|
* Special handling for git-annex branch: Reset to last good commit, and
|
||||||
(Special handling for git-annex branch: Commit .git/annex/index over
|
then commit `.git/annex/index` over top of that, and then run a
|
||||||
top of the reset git-annex branch, and then run a `git annex fsck --fast`
|
`git annex fsck --fast` to fix up any object location info.
|
||||||
to fix up any object location info.)
|
* Remote tracking branches can just be removed, and then `git fetch`
|
||||||
|
from the remote, which will re-download missing objects from it and
|
||||||
Also should check all remote tracking branches. If such a branch refers
|
reinstate the tracking branch.
|
||||||
to a missing object, it is sufficient to remove the tracking
|
* For other branches (or tags), it's best to not rewrite them, because
|
||||||
branch and then `git fetch` from the remote, which will re-download missing
|
that could get really confusing. Instead, delete the old broken branch,
|
||||||
objects from it and reinstate the tracking branch.
|
and make a "recovered/$branch" that holds the last good commit.
|
||||||
|
|
Loading…
Add table
Reference in a new issue