"Andrej Shadura via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > It is possible for a user to disable attribute-based filtering when > committing by doing one of the following: > > * Create .git/info/attributes unapplying all possible transforming > attributes. > * Use git hash-object and git update-index to stage files manually. > > Doing the former requires keeping an up-to-date list of all attributes which > can transform files when committing or checking out. Doing the latter is > difficult, error-prone and slow when done from scripts. > > Instead, similarly to git hash-object, --no-filter can be added to git add > to enable temporarily disabling filtering in an easy to use way. I think brian's review covered if such a feature is desirable to sufficient level, and I do not have anything to add in that area, so I'll limit my comment to the general design and implementation. In general, think three times before introducing --no-something option. It often is much cleaner and futureproof if you instead introduced --something option whose value defaults to true instead, so that the end-user can say --no-something from the command line. > - OPT_BOOL( 0 , "no-filters", &no_filters, N_("store file as is without filters")), > -+ OPT_BIT(0 , "no-filters", &flags, N_("store file as is without filters"), > ++ OPT_BIT(0, "no-filters", &flags, N_("store file as is without filters"), > + HASH_RAW), In other words, these should give "filters" option, and the code should initialize the flags word with USE_CLEAN_FILTER bit on by default (the use of "clean" here comes from "clean vs smudge", one of the pair of filters end-user can customize the path the data takes going into Git from the outside world; and the "clean" and "smudge" datapaths also trigger non-custom standard ones like crlf munging). That way when a configuration variable support is introduced to allow the users to say "I by default refuse to use the clean filters when running 'git add'" by setting say "[add] cleanfilter = false", the user can override that with "--filters" from the command line "for just this time". The same goes for an alias that hardcodes "--no-filters" on the command line, where allowing "--filters" lets the users override it. Thanks.