aboutsummaryrefslogtreecommitdiff
path: root/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn
blob: 78f4977a27a63ac6188dd29ed860acf0a9a76be4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
A git-annex repository on a removable USB drive is great, until the cable
falls out at the wrong time and git's repository gets trashed. The way
git checksums everything and the poor quality of USB media makes this
perhaps more likely than you would expect. If this happens to you,
here's a way to recover that makes the most of whatever data is left
on the drive.

* First, run `git fsck`. If it does not report any problems, your data
  is fine, and you don't need to proceed further.
* So `git fsck` says the git repository is corrupted. But probably the data
  git-annex stored is fine. Your first step is to clone another copy
  of the git repository from somewhere else. Let's call this clone
  "$good", and the corrupted repository "$bad".
* Preserve your git configuration changes, and the `annex.uuid` setting:
  `mv $bad/.git/config $good/.git/config`
* Move annexed data into the new repository: `mkdir $good/.git/annex; mv
  $bad/.git/annex/objects $good/.git/annex/objects`
* Reinitalize git-annex: `cd $good; git annex init`
* Check for any problems with the annexed data: `cd $good; git annex fsck`
* Now you can remove the corrupted repository, the new one is ready to use.

Alternatively, recent versions of git-annex have a `git annex repair`
command that uses <http://git-repair.branchable.com/> to repair a
repository in-place. The git-annex assistant will detect most corruptions
and offer to run the repair for you automatically.

--[[Joey]]