//This task originally focused narrowly on generated code.//
- See also T13130 for broader discussion and rationale.
- See PHI64 for some plans.
Recently, changesets in Differential have "attributes". There is a large set of behaviors which attributes should expand to handle. Generally, "attributes" mean that `arc` can specify these behaviors per-changeset with client-side rules, and Differential/Diffusion can optionally also specify these behaviors with rules.
- **Generated Code**: See PHI64. `arc` should be able to mark arbitrary changesets as "generated" so they are folded at display time.
- **Third-Party Code**: See PHI1007. This is exactly the same as "generated" code, it just should say "This is third party code..." instead of "This is generated code...".
- **Context**: See PHI675. By default, `arc` uploads files with full context. There are several levels of complexity here, but one desirable outcome is likely to let `arc` selectively send large files with less context (i.e., produce a low-context diff if a change includes a couple of lines in a 10MB text file).
- **Tab Widths**: See T2495. `arc` could have rules to say "this file uses 17-space tabstops".
- **Syntax Highlighting**: `arc` could have rules to say "by default, highlight this file as though it were python source code".
- **Encoding**: `arc` could have rules to say "by default, render this file as encoded with Shift-JIS".
- **"Don't Hide this Deleted File"**: See PHI985, where an install would like Differential to show deleted files by default. Although I don't think this use case is very marginal, it might be reasonable to have an "always show this changeset" flag that's stronger than other behaviors like the "generated" attribute and the default behavior for deleted files. You could then configure `arc` to set this flag on every changeset if you want "always show deleted files" as a behavior.
Obsolete/questionable:
- **Whitespace**: After changes connected to T13161, specifying whitespace behavior no longer makes much sense because whitespace options have been removed.
- **Bypass Owners**: PHI1061 wants to be able to specify a rule that changes to a specific file by a specific user can bypass audits triggered by Owners. ~~I think the best clean/general way to accomplish this is to provide "Owners: Skip Audit" and "Owners: Skip Review" attributes, which cause tagged files to be ignored when compiling package lists.~~ I'm less thrilled about this approach after trying to actually do this. Among other reasons, we don't have `Changeset` objects in `PhabricatorRepositoryCommitOwnersWorker`.