The way you describe the environment, it's impossible to bring deterministic automated updates. If you have users customizing views, css, etc., there is bound to be some manual intervention needed if your updates also include views, css, etc.
You could use git, mercurial or a similar tool, but users would need to be versed enough to merge their own changes, etc. I don't see this approach as really being viable unless it's a very specific target group, ie. developers, system administrators, etc. Well, not even then... People do crazy things, or at least things you don't expect. User creativity (and "creativity") never stops to amaze me... So, it would be better to request users to submit their changes first and then create personalized updates - hopefully, you'll be getting paid for such support :)
I'd approach this problem as any other OS package - use separate config files that don't get updated, have app files that get overwritten on every update. Each operating system or a distribution has pretty good tools to achieve this - rpm, deb, etc. But if you need to, let's say, update the views, users will simply loose their customized views. There is no way around this.
Regards,
Ales