Why can't this just be CoreConfig? I will admit I haven't read all of the code yet, but we should be setting the path encoding option in one location (e.g. CoreConfig) and have everyone try to use that whenever possible.

Or... if CoreConfig is too heavy for some contexts, always use the TreeOptions object but put this in the .lib package rather than treewalk. (By too heavy, I mean its hard to create a one-off configuration that isn't connected to a specific Repository.)