Jakub Narebski <jnareb@xxxxxxxxx> writes: > Currently after rename we have the following git_read_* functions > > * git_read_info_refs, which reads .git/info/refs directly and relies on it's > format > * git_read_hash which translates ref to hash by reading ref file > (e.g. .git/refs/heads/master) which means that it doesn't support symrefs > yet; but first, it should be easy to implement without invoking any git > command, and second, there are usually no symrefs beside HEAD, and I'm not > sure that git would work with non-HEAD symref. > * git_read_refs (or rather git_readdir_refs) which reads .git/refs directory > * git_read_projects (or rather git_readdir_projects) which checks for > projects checking if HEAD file exists > * git_read_description which reads .git/description; but in the future > description might be stored in repository config > > What is also important is the fast that git_read_* functions are fast, > with exception of git_read_info_refs... Hmph. readdir-refs is quite bad for future compatibility, so is read_hash. If you want _fast_ then make the implementation fast (or leave room to make it fast later); encoding the fastness assumption in the name IS WRONG. For example, sub git_get_hash (not git_read_hash) can stay as (potentially buggy wrt symrefs) "reading from .git/refs/$thing" or could even be fixed to read from git-rev-parse (which is the kosher way). If it turns out to be a bottleneck, it could be rewritten using Git.xs. The same thing for read_refs which I think should be doing ls-remote on the repository if it wants to be kosher. >> The problem is when... > > With two scripts attached to the first post in this thread it would be > simple to apply pre-rename patch, by converting gitweb to pre-rename using > gitweb-unrename.sh script, then applying patch, then restoring new names > using gitweb-rename.sh script, and finally comitting changes (or amending > commit). That assumes the rename be done now, and nobody introduces new functions following old naming convention in the meantime. - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html