一 故障背景:
公司源码管理工具从SVN迁移到Git之后,Git源码服务器采用本地bitbucket托管。在一次bitbucket服务器所在虚拟主机由于存储空间吃紧,导致bitbucket意外宕机的故障之后。恢复虚拟主机,启动bitbucket之后,发现有某个项目的某个repository故障,导致开发同事无法提交代码,耽误事儿。
二 解决过程:
1 首先,在bitbucket上新建立1个项目工程以及repository给上述失败的项目使用;
2 其次,让该项目的开发同事,拿本地的git源码push到该新建的工程下对应的repository里;
3 然后,手工删除原故障的工程以及其下的所有repository,在控制台上进入该repository的时候,报错:
4 其次,再想办法如何解决该500错误:
‘/usr/local/git/bin/git cat-file -t refs/heads/master:’ exited with code 128 saying: error: object file ./objects/f4/22a78e5d8324e7c3fdaa5f9c88b02c7c7622dc is empty fatal: loose object f422a78e5d8324e7c3fdaa5f9c88b02c7c7622dc (stored in ./objects/f4/22a78e5d8324e7c3fdaa5f9c88b02c7c7622dc) is corrupt
a 进入bitbucket服务器的BITBUCKET_HOME,/data/atlassian/application-data/bitbucket下的 shared/data/repositories子目录:
[root@localhost repositories]# pwd
/data/atlassian/application-data/bitbucket/shared/data/repositories
[root@localhost repositories]# ll
总用量 508
drwxr-xr-x. 7 root root 4096 12月 13 23:20 100
drwxr-xr-x. 7 root root 4096 12月 13 23:21 101
drwxr-xr-x. 7 root root 4096 12月 13 23:20 105
drwxr-xr-x. 7 root root 4096 12月 13 23:21 107
drwxr-xr-x. 7 root root 4096 12月 13 23:20 108
drwxr-xr-x. 7 root root 4096 12月 13 23:20 115
drwxr-xr-x. 7 root root 4096 12月 13 23:21 116
drwxr-xr-x. 7 root root 4096 12月 13 23:21 117
drwxr-xr-x. 7 root root 4096 12月 13 23:21 118
drwxr-xr-x. 7 root root 4096 12月 13 23:20 119
drwxr-xr-x. 7 root root 4096 12月 13 23:20 120
drwxr-xr-x. 7 root root 4096 12月 13 23:21 121
drwxr-xr-x. 7 root root 4096 12月 13 23:21 122
drwxr-xr-x. 7 root root 4096 12月 13 23:21 123
drwxr-xr-x. 7 root root 4096 12月 13 23:20 124
drwxr-xr-x. 7 root root 4096 12月 13 23:21 125
drwxr-xr-x. 7 root root 4096 12月 13 23:20 126
drwxr-xr-x. 7 root root 4096 12月 13 23:21 127
drwxr-xr-x. 7 root root 4096 12月 13 23:20 128
drwxr-xr-x. 7 root root 4096 12月 13 23:21 129
drwxr-xr-x. 7 root root 4096 12月 13 23:21 13
drwxr-xr-x. 7 root root 4096 12月 13 23:20 130
drwxr-xr-x. 7 root root 4096 12月 13 23:20 131
drwxr-xr-x. 7 root root 4096 12月 13 23:21 132
drwxr-xr-x. 7 root root 4096 12月 13 23:21 133
drwxr-xr-x. 7 root root 4096 12月 13 23:20 134
drwxr-xr-x. 7 root root 4096 12月 13 23:20 135
drwxr-xr-x. 7 root root 4096 12月 13 23:21 136
drwxr-xr-x. 7 root root 4096 12月 13 23:21 137
drwxr-xr-x. 7 root root 4096 12月 13 23:20 138
drwxr-xr-x. 7 root root 4096 12月 13 23:21 139
drwxr-xr-x. 7 root root 4096 12月 13 23:20 140
drwxr-xr-x. 7 root root 4096 12月 13 23:21 141
drwxr-xr-x. 7 root root 4096 12月 13 23:20 142
drwxr-xr-x. 7 root root 4096 12月 13 23:20 143
drwxr-xr-x. 7 root root 4096 12月 13 23:21 144
drwxr-xr-x. 7 root root 4096 12月 13 23:20 145
drwxr-xr-x. 7 root root 4096 12月 13 23:21 146
drwxr-xr-x. 7 root root 4096 12月 13 23:20 147
drwxr-xr-x. 7 root root 4096 12月 13 23:21 148
drwxr-xr-x. 7 root root 4096 12月 13 23:20 149
drwxr-xr-x. 7 root root 4096 12月 13 23:21 15
drwxr-xr-x. 7 root root 4096 12月 13 23:21 150
drwxr-xr-x. 7 root root 4096 12月 13 23:20 153
drwxr-xr-x. 7 root root 4096 12月 13 23:21 154
drwxr-xr-x. 7 root root 4096 12月 13 23:21 156
drwxr-xr-x. 7 root root 4096 12月 13 23:21 157
drwxr-xr-x. 7 root root 4096 12月 13 23:21 158
drwxr-xr-x. 7 root root 4096 12月 13 23:20 159
drwxr-xr-x. 7 root root 4096 12月 13 23:21 16
drwxr-xr-x. 7 root root 4096 12月 13 23:21 166
drwxr-xr-x. 7 root root 4096 12月 13 23:20 167
drwxr-xr-x. 7 root root 4096 12月 13 23:21 168
drwxr-xr-x. 7 root root 4096 12月 13 23:21 169
drwxr-xr-x. 7 root root 4096 12月 13 23:21 170
drwxr-xr-x. 7 root root 4096 12月 13 23:21 171
drwxr-xr-x. 7 root root 4096 12月 13 23:20 172
drwxr-xr-x. 7 root root 4096 12月 13 23:20 173
drwxr-xr-x. 7 root root 4096 12月 13 23:21 174
drwxr-xr-x. 7 root root 4096 12月 13 23:21 175
drwxr-xr-x. 7 root root 4096 12月 13 23:21 176
drwxr-xr-x. 7 root root 4096 12月 13 23:21 177
drwxr-xr-x. 7 root root 4096 12月 13 23:20 178
drwxr-xr-x. 7 root root 4096 12月 13 23:20 179
drwxr-xr-x. 7 root root 4096 12月 13 23:21 180
drwxr-xr-x. 7 root root 4096 12月 13 23:21 181
drwxr-xr-x. 7 root root 4096 12月 13 23:20 182
drwxr-xr-x. 7 root root 4096 12月 13 23:21 183
drwxr-xr-x. 7 root root 4096 12月 13 23:20 184
drwxr-xr-x. 7 root root 4096 12月 13 23:21 185
drwxr-xr-x. 7 root root 4096 12月 13 23:21 186
drwxr-xr-x. 7 root root 4096 12月 13 23:20 187
drwxr-xr-x. 7 root root 4096 12月 13 23:21 188
drwxr-xr-x. 7 root root 4096 12月 13 23:21 189
drwxr-xr-x. 7 root root 4096 12月 13 23:21 190
drwxr-xr-x. 7 root root 4096 12月 13 23:21 192
drwxr-xr-x. 7 root root 4096 12月 13 23:21 193
drwxr-xr-x. 7 root root 4096 12月 13 23:21 194
drwxr-xr-x. 7 root root 4096 12月 13 23:21 195
drwxr-xr-x. 7 root root 4096 12月 13 23:20 196
drwxr-xr-x. 7 root root 4096 12月 13 23:21 197
drwxr-xr-x. 7 root root 4096 12月 13 23:21 27
drwxr-xr-x. 7 root root 4096 12月 13 23:21 28
drwxr-xr-x. 7 root root 4096 12月 13 23:20 29
drwxr-xr-x. 7 root root 4096 12月 13 23:21 3
drwxr-xr-x. 7 root root 4096 12月 13 23:21 40
drwxr-xr-x. 7 root root 4096 12月 13 23:21 41
drwxr-xr-x. 7 root root 4096 12月 13 23:20 47
drwxr-xr-x. 7 root root 4096 12月 13 23:21 51
drwxr-xr-x. 7 root root 4096 12月 13 23:21 52
drwxr-xr-x. 7 root root 4096 12月 13 23:21 53
drwxr-xr-x. 9 root root 4096 12月 13 23:21 56
drwxr-xr-x. 7 root root 4096 12月 13 23:21 57
drwxr-xr-x. 7 root root 4096 12月 13 23:21 58
drwxr-xr-x. 7 root root 4096 12月 13 23:21 59
drwxr-xr-x. 7 root root 4096 12月 13 23:21 60
drwxr-xr-x. 7 root root 4096 12月 13 23:21 61
drwxr-xr-x. 7 root root 4096 12月 13 23:20 62
drwxr-xr-x. 7 root root 4096 12月 13 23:21 63
drwxr-xr-x. 7 root root 4096 12月 13 23:21 64
drwxr-xr-x. 7 root root 4096 12月 13 23:20 65
drwxr-xr-x. 9 root root 4096 12月 13 23:21 66
drwxr-xr-x. 7 root root 4096 12月 13 23:21 67
drwxr-xr-x. 7 root root 4096 12月 13 23:20 68
drwxr-xr-x. 7 root root 4096 12月 13 23:21 69
drwxr-xr-x. 7 root root 4096 12月 13 23:20 70
drwxr-xr-x. 7 root root 4096 12月 13 23:21 71
drwxr-xr-x. 7 root root 4096 12月 13 23:21 72
drwxr-xr-x. 7 root root 4096 12月 13 23:20 73
drwxr-xr-x. 7 root root 4096 12月 13 23:21 74
drwxr-xr-x. 7 root root 4096 12月 13 23:21 75
drwxr-xr-x. 7 root root 4096 12月 13 23:21 81
drwxr-xr-x. 7 root root 4096 12月 13 23:21 82
drwxr-xr-x. 7 root root 4096 12月 13 23:21 83
drwxr-xr-x. 7 root root 4096 12月 13 23:20 84
drwxr-xr-x. 7 root root 4096 12月 13 23:21 85
drwxr-xr-x. 7 root root 4096 12月 13 23:21 86
drwxr-xr-x. 7 root root 4096 12月 13 23:21 87
drwxr-xr-x. 7 root root 4096 12月 13 23:20 88
drwxr-xr-x. 7 root root 4096 12月 13 23:20 89
drwxr-xr-x. 7 root root 4096 12月 13 23:21 90
drwxr-xr-x. 7 root root 4096 12月 13 23:21 91
drwxr-xr-x. 7 root root 4096 12月 13 23:21 92
drwxr-xr-x. 7 root root 4096 12月 13 23:21 93
drwxr-xr-x. 7 root root 4096 12月 13 23:20 94
drwxr-xr-x. 7 root root 4096 12月 13 23:20 98
drwxr-xr-x. 7 root root 4096 12月 13 23:21 99
[root@localhost repositories]#
b 查找哪个repository包含上述报错的“22a78e5d8324e7c3fdaa5f9c88b02c7c7622dc”关键字
[root@localhost repositories]# find ./ |xargs grep -ri “22a78e5d8324e7c3fdaa5f9c88b02c7c7622dc”
./66/refs/heads/master:f422a78e5d8324e7c3fdaa5f9c88b02c7c7622dc
./66/refs/heads/master:f422a78e5d8324e7c3fdaa5f9c88b02c7c7622dc
./66/refs/heads/master:f422a78e5d8324e7c3fdaa5f9c88b02c7c7622dc
./66/refs/heads/master:f422a78e5d8324e7c3fdaa5f9c88b02c7c7622dc
[root@localhost repositories]#
c 执行git fsck
[root@localhost repositories]# cd 66
[root@localhost 66]# git fsck
检查对象目录中: 100% (256/256), 完成.
error: object file ./objects/1a/d1162a6381f39960d7efb38aee8e989965489e is empty
error: object file ./objects/1a/d1162a6381f39960d7efb38aee8e989965489e is empty
fatal: loose object 1ad1162a6381f39960d7efb38aee8e989965489e (stored in ./objects/1a/d1162a6381f39960d7efb38aee8e989965489e) is corrupt
[root@localhost 66]#
d 然后到控制台,依然报错(此步骤非必须):
e 删除包含关键字为66的repository:
[root@localhost repositories]# rm -rf 66
[root@localhost repositories]#
f 最后到控制台上删除包含错误的repository以及其工程project。
删除之后,之前报错的repository不再出现。
三 小结解决思路
1在Git服务器上创建新的项目和对应的repository;
2 手工把本地源码push到该新建的项目下;
3 删除出错的旧工程及其所有的repository;
4 删除出错,可以到Git服务器的BITBUCKET_HOME,/data/atlassian/application-data/bitbucke/shared/data/repositories子目录下,通过将包含错误信息的repository手工删除来处理。