Mercurial > hg-stable
changeset 9366:9ff178e7b627
tags: don't crash if unable to write tag cache
This happens with hgweb in real life, if the httpd user is unable to
write in the repository directory. Another case is doing 'hg incoming'
on a repository in the filesystem owned by someone else.
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Tue, 18 Aug 2009 22:07:43 -0400 |
parents | b8dc3eba4f9d |
children | 1ef630452e0b |
files | mercurial/tags.py tests/test-tags tests/test-tags.out |
diffstat | 3 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/tags.py Wed Aug 19 12:51:07 2009 +0200 +++ b/mercurial/tags.py Tue Aug 18 22:07:43 2009 -0400 @@ -301,7 +301,10 @@ def _writetagcache(ui, repo, heads, tagfnode, cachetags): - cachefile = repo.opener('tags.cache', 'w', atomictemp=True) + try: + cachefile = repo.opener('tags.cache', 'w', atomictemp=True) + except (OSError, IOError): + return _debug(ui, 'writing cache file %s\n' % cachefile.name) realheads = repo.heads() # for sanity checks below
--- a/tests/test-tags Wed Aug 19 12:51:07 2009 +0200 +++ b/tests/test-tags Tue Aug 18 22:07:43 2009 -0400 @@ -37,9 +37,17 @@ hg identify # repeat with cold tag cache +echo "% identify with cold cache" rm -f .hg/tags.cache hg identify +# and again, but now unable to write tag cache +echo "% identify with unwritable cache" +rm -f .hg/tags.cache +chmod 555 .hg +hg identify +chmod 755 .hg + echo "% create a branch" echo bb > a hg status
--- a/tests/test-tags.out Wed Aug 19 12:51:07 2009 +0200 +++ b/tests/test-tags.out Tue Aug 18 22:07:43 2009 -0400 @@ -13,6 +13,9 @@ tip 1:b9154636be93 first 0:acb14030fe0a b9154636be93 tip +% identify with cold cache +b9154636be93 tip +% identify with unwritable cache b9154636be93 tip % create a branch M a