Currently, when a changeset fails to render (e.g., because an underlying git command failed), we show a modal error dialog to the user. This is fairly disruptive, especially if several changesets fail (you get a stack of modal dialogs). This happens in Differential (revision detail view) and Diffusion (commit detail view). It can be reproduced by inserting an artificial exception into changeset rendering.
Instead, we should catch these exceptions and show them inline, with an option to retry (some exceptions are temporary or load-related and will succeed on retry). That is, instead of showing the diff normally, these changesets would just show an error:
Couldn't load this junk: blay blah yada yaada git derped sry bro [ Retry ]
Original Description
In a local install of Phabricator I have some big .so files (linux compiled library) that were erroneously put in the repository. Whenever I visit the page of one of these commit, I get an error window overlaid showing that the git diff process was killed due to an out of memory error. This also seem to cause some sort of performance problems on the server which are likely caused by this diff.
I know that .so files shouldn't be put in repositories, but it'd be nice too if Phabricator wouldn't try to make a diff out of it when it encounters one. Also, is there a configuration variable for files to exclude from diffs? I couldn't find one.
Here's what the error says:
Unhandled Exception ("CommandException") Command failed with error #137! COMMAND (cd '/home/ubuntu/git/repo' && git diff -M -C --no-ext-diff --no-color --src-prefix=a/ --dst-prefix=b/ -U65535 '8d47d1dd481310467438f801643acb97a7326f27^' '8d47d1dd481310467438f801643acb97a7326f27' -- 'Server/libModel_d.so') STDOUT (empty) STDERR Killed