Re: [PATCH v2 2/6] builtin/am: make sure state files are text
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:06:18
Jeff King [off-list ref] writes:
On Tue, Aug 25, 2015 at 09:19:13AM -0700, Junio C Hamano wrote:quoted
As to "flags exposed to callers" vs "with and without gently", when we change the system to allow new modes of operations (e.g. somebody wants to write a binary file, or allocate more flag bits for their special case), I'd expect that we'd add a more general and verbose "write_file_with_options(path, flags, fmt, ...)"), gain experience with that function, and then possibly introduce canned thin wrappers (e.g. write_binary_file() that is a synonym to passing BINARY but not GENTLY) if the new thing proves widely useful, just like I left write_file() and write_file_gently() in as fairly common things to do.Yeah, that works. It is a bit of a gamble to me. If we never add a lot more options, the end result is much nicer (callers do not deal with the flag option at all). But if we do, we end up with the mess that get_sha1_with_* and add_pending_object() got into.
Yeah. I do not know. Perhaps a good intermim solution for now would be to make - write_file_l(path, flags, fmt, ...); the low-level helper, with a single convenience wrapper: - write_file(path, fmt, ...) for everybody other than two "gently" ones to use. Two "gently" ones can call write_file_l(path, WRITE_FILE_GENTLY, fmt,...). You are right about binary stuff. You could do fmt="...%c..." and pass '\0' to corresponding place if your NUL is in the fixed part of the data you are generating, but otherwise write_file() interface is a very useful way to handle binary.