error on unix filesystems that don't support symlinks
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
In Progress
|
Medium
|
Parth Malwankar |
Bug Description
bzr may be on a unix system that knows about symlinks, but a filesystem that doesn't support them. We should, at minimum, give a clear error about this. Perhaps it would be better to fallback to putting placeholders instead of the symlinks.
-----
I'm trying to push a branch to a repository on a USB stick, but
getting an error that appears to be ultimately from the filesystem.
=====
$ bzr version
Bazaar (bzr) 1.5
Python interpreter: /usr/bin/python 2.5.2
Python standard library: /usr/lib/python2.5
bzrlib: /usr/lib/
Bazaar configuration: /home/bignose/
Bazaar log file: /home/bignose/
[...]
$ bzr init-repository --trees /media/sdb1/bazaar/
$ bzr info /media/sdb1/bazaar/
Shared repository with trees (format: pack-0.92)
Location:
shared repository: /media/sdb1/bazaar
$ bzr init /media/
$ bzr info /media/
Repository tree (format: pack-0.92)
Location:
shared repository: /media/sdb1/bazaar
repository branch: /media/
$ bzr info .
Standalone tree (format: pack-0.92)
Location:
branch root: .
[...]
$ bzr push /media/
bzr: ERROR: [Errno 1] Operation not permitted
$ bzr push --verbose /media/
bzr: ERROR: [Errno 1] Operation not permitted
=====
What can I do to find out what Bazaar is trying to do that fails here?
What can I do to fix it?
Here is the corresponding traceback from '$HOME/.bzr.log':
=====
0.254 encoding stdout as sys.stdout encoding 'UTF-8'
0.255 bzr arguments: [u'push', u'--verbose', u'/media/
0.255 looking for plugins in /home/bignose/
0.255 looking for plugins in /usr/lib/
0.256 Plugin name __init__ already loaded
0.256 Plugin name __init__ already loaded
0.316 encoding stdout as sys.stdout encoding 'UTF-8'
0.513 opening working tree '/media/
0.582 Using fetch logic to copy between KnitPackReposit
0.667 Traceback (most recent call last):
File "/usr/lib/
return run_bzr(argv)
File "/usr/lib/
ret = run(*run_argv)
File "/usr/lib/
return self.run(
File "/usr/lib/
tree_to.update()
File "/usr/lib/
return self._update_
File "/usr/lib/
return unbound(self, *args, **kwargs)
File "/usr/lib/
change_
File "/usr/lib/
return merger.do_merge()
File "/usr/lib/
merge.do_merge()
File "/usr/lib/
self.
File "/usr/lib/
file_status = self.merge_
File "/usr/lib/
self.other_tree, trans_id)
File "/usr/lib/
tt.create_
File "/usr/lib/
os.symlink(
OSError: [Errno 1] Operation not permitted
=====
That gives a pretty big clue: This repository is on a FAT16
filesystem, and I'm asking it to update a working tree containing
symlinks.
Should I expect that to work?
If it is to fail, I would at least expect a more sensible error
message, indicating what operation is failing, and exactly which file
in the working tree is being updated at the point of the failure.
Related branches
- bzr-core: Pending requested
-
Diff: 65 lines (+33/-1)3 files modifiedbzrlib/tests/test_transform.py (+21/-0)
bzrlib/transform.py (+7/-1)
doc/en/release-notes/bzr-2.6.txt (+5/-0)
Changed in bzr: | |
importance: | Undecided → Medium |
status: | New → Confirmed |
tags: | added: filesystem symlink |
at work we use samba to share files - we can't use bazaar because of this bug :/