Clemens Buchacher <drizzd@xxxxxx> writes: > Pros and cons for "undeleting branches": > > + safety net > It should not be easy to lose information with git. I am personally not very convinced by this argument when it comes to the cases where the user actively asks us to remove something. > + less dependant on git branch -d > > Since git branch -d deletes branches which have been merged to a > remote tracking branch, it does no longer guarantee that the branch > is still available in history locally, and if the branch is also > deleted remotely, running git remote prune removes it entirely. Sorry, I have no idea what you are talking about in this paragraph. I cannot read "Who depends on git branch -d to achieve what" from your description. All I read in the above description is that what the command does is a good thing. If you want to keep the remote tracking branches around, don't run "branch -d". If you do want to remove the history of a branch, run "branch -d". Isn't it that simple? Perhaps the missing "achieve what" may be that "output from 'git branch' is too cluttered if I don't remove already merged branches as early as possible, and forces me to run 'git branch -d' to clean things up too often"? If that is the issue you are trying to address, perhaps we can solve that in a more direct way, e.g. "git branch --no-merged" easier to access? > - user interface complexity > > How to prune deleted branches? Currently, it is enough to do "git > branch -D branch; git gc --prune" in order to get rid of the branch > objects, at least if the HEAD reflog does not contain it or has > expired. Consider for example adding a remote, and removing it > again. This operation would leave a bunch of deleted branches, > which potentially occupy a lot of disk space. > > How to find and restore deleted branches? If the reflog is used to > record deleted branches, and a new branch of the same name is > created, the reflog contains entries from unrelated branches. [1] > If the deleted reflogs are stored in an attic, how do we reference > those? This is the area I am most concerned about. If you take an analogy in say a file server implementation, yes, it should not be easy to lose information there. But it is and should be easy to say "rm junk". How would people recover from a mistake if they typed a wrong filename, "rm junio" to lose a precious file "junio", when they meant to lose "junk"? They go to backups. Can't git users do the same? After all, .git directory is stored on a filesystem of some sort, and taking a backup (you do take backups, don't you?) and picking the stuff you lost from there should be a standard procedure that can be learned outside of the context of git. This is pretty-much a tangent, but I recall from time to time people wonder why the branch namespace is not flat. If that is a common wish, your "tilde-suffix all the intermediate path components" trick could be used in later versions of git (perhaps 1.8.X series) to improve the system to allow "maint-1.7.0" branch and topic branches that forked from it e.g. "maint-1.7.0/fix-frotz" and "maint-1.7.0/fix-nitfol" peacefully co-exist. -- To unsubscribe from this list: 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