Status change [<REPO>]: fatal: object <COMMIT_HASH> not found
症状
The following entry appear on the fisheye-debug-<DATE>.log
with the DEBUG
'ON'
:
2012-07-15 13:56:38,269 DEBUG [ExtProcess IO Pump <REPO>] fisheye.app RepositoryStatus-setMessage - Status change [<REPO>]: error: unable to find 2c8b3f87cb395cdc88865d97804b1bf804f8a027
2012-07-15 13:56:38,269 DEBUG [ExtProcess IO Pump <REPO>] fisheye.app RepositoryStatus-setMessage - Status change [<REPO>]: fatal: object 2c8b3f87cb395cdc88865d97804b1bf804f8a027 not found
...
2012-07-19 00:29:59,770 ERROR [IncrementalPinger1 ] fisheye.app OneOffPingRequest-doRequest - Exception during slurp
com.cenqua.fisheye.config.ConfigException: Unable to fetch from remote repository: ssh://<USER>@<REPO>/<PATH>
...
Caused by: com.atlassian.utils.process.ProcessException: While executing: "git fetch ssh://<USER>@<REPO>/<PATH> +refs/*:refs/* "
...
Caused by: com.atlassian.utils.process.ProcessException: Non-zero exit code: 1
...
診断
Run the following command on both the source repository and Fisheye/Crucible's clone (FISHEYE_INST/var/cache/<REPO>/clone
) of the source repository:
git show-ref
This will list all branches and tags in the repository. It will tell how to identify if the cause is an errant branch or tag that points to a non-existent revision
git log --graph --format="%H"
This issue is verified if the commit
from the hash
ERROR
above EXISTS in the repository but DOESN'T EXIST in the Fisheye/Crucible clone. Otherwise, please open a SAC issue.
原因
The reference to the stash
was not cloned to Fisheye/Crucible's clone of the repository.
ソリューション
Since command git stash
only works in a working directory, we will not be able to run it directly on the source repository. The git stash
is just a bash script, which automatically fails if it detects it is working on a bare clone. It runs the following command on git core to actually delete the stash (see note below):
git update-ref -d refs/stash [COMMIT_HASH]
This command will completely wipe the stash so retrieve valuable information prior to running or ensure the data is no longer needed.