Skip files where 'p4 print' provides a symlink
Review Request #3221 — Created July 16, 2012 and submitted — Latest diff uploaded
The riddle: how can a file both exist and not exist? The answer: symlinks! When a symlink is checked into perforce running 'p4 print -o' will create a symlink, not the file that it points to. This naturally makes postreview.py choke... ~% post-review Traceback (most recent call last): File "/share/rbtools/rbtools/postreview.py", line 4115, in <module> main() File "/share/rbtools/rbtools/postreview.py", line 4061, in main diff, parent_diff = tool.diff(args) File "/share/rbtools/rbtools/postreview.py", line 2002, in diff return self._changenum_diff(changenum) File "/share/rbtools/rbtools/postreview.py", line 2299, in _changenum_diff self._write_file(old_depot_path, tmp_diff_from_filename) File "/share/rbtools/rbtools/postreview.py", line 2475, in _write_file os.chmod(tmpfile, stat.S_IREAD | stat.S_IWRITE) OSError: [Errno 2] No such file or directory: '/tmp/tmpsCS-fw' Resolving symlinks, especially those with a relative path would be tricky. Also, there's no certainty that the file it points to is even in version control. Hence I'm just dropping it from the review with a warning.
Tested this change both when reviewing a single symlink file and a batch of files containing a symlink. We've been using this change against RBTools 0.3. I've adapted the change for the current master but this copy of it hasn't been exercised.