_CheckDirReference: log actual error before suggesting --force-sync

A recent backward incompatible change created confusion and loss of
productivity and highlighted the very limited amount of information
provided when repo sync fails; merely recommending to --force-sync
and blow-up git repos without any hint as to why. The addition of
this basic _error(...) call would have provided a clue and will in
the future.

BUG=Issue 232
TEST=simulate a breakage similar to the ones reported at
  https://groups.google.com/a/chromium.org/forum/#!topic/chromium-os-dev/2-0oCy_CX5s
  cd .repo/projects/src/third_party/libapps.git/
  file info; rm info; ln -s wronglink info
  cd -
  repo sync src/third_party/libapps/
  # error message now shows the failure

Change-Id: Idd2f177a096f1ad686caa8c67cb361d594ccaa57
This commit is contained in:
Marc Herbert 2016-10-27 12:58:26 -07:00
parent 4d5bb68d58
commit ec287902e6

View File

@ -2400,6 +2400,7 @@ class Project(object):
src = os.path.realpath(os.path.join(srcdir, name)) src = os.path.realpath(os.path.join(srcdir, name))
# Fail if the links are pointing to the wrong place # Fail if the links are pointing to the wrong place
if src != dst: if src != dst:
_error('%s is different in %s vs %s', name, destdir, srcdir)
raise GitError('--force-sync not enabled; cannot overwrite a local ' raise GitError('--force-sync not enabled; cannot overwrite a local '
'work tree. If you\'re comfortable with the ' 'work tree. If you\'re comfortable with the '
'possibility of losing the work tree\'s git metadata,' 'possibility of losing the work tree\'s git metadata,'