I suspect what probably happened is that someone pulled branches, made changes, and tried to push the changes. However, they probably got push errors because others had pushed changes in the meantime. Instead of addressing that (which is easy to do), they just added the —force flag (bad!). They're then rewriting the history, leaving any tags that referenced the old history referring commits that don't belong to a head.
Precisely.. If you have to use —force ; you are using GIT wrong… Yesterday again, Toastman deleted a commit just so he could use one of my commit as-is and pushed it breaking history. I have discussed this with him already.
Once you have pushed upstream: you don't delete a pushed commit *ever*.
For instance, not long ago, I created a new local Tomato development repository. The only branch I was going to deal with in this repository was the vpngui branch. So, that's the only branch I pulled. The commits and heads for all of the other branches didn't affect me at all and my download didn't include them.
To only checkout a branch, you must clone the whole repo first ; there's no way around that … I guess that's what he was referring to.
This git repo, *is* big for what it is… 1GB in size ; and as the server isn't that fast, it took me several hours to perform the first clone.
While I have no problem with having lots of branches or tags in a project, I do agree that many of them as they are now are redundant and make little sense.
Like why do you need a different branch for linux 2.4 than linux 2.6 kernel. Especially when there's already a clear distinction between compiling from src-rt and src.
Why do you need two branches just because the wireless drivers are different ?
I believe those should be merged and corrected so they can compile for either target ; and let you choose at compile time through a makefile option which driver to use.
Many branches are they are now are more like forks, it's clear that they will never be merged back together.
It would be nice to merge the -N and non-N branches and properly crafted Makefile to compile either.
Same for tomato-RT and tomato-USBmod
This would already drastically reduce the number of branches and ease maintenance.
It would also be much easier if someone was to document which branch is what.. Because as of now; I have no clue.. Completely lost in all those branches…
There is also the problem that some target do not work… MIPSR1 build using tomato-USBmod bricked my WRT54GL and that was after I had spent a great deal of effort getting it to compile in the first place!
I'm a new comer, so obviously my opinion has little weight, but for an outsider like me, it's true that everything look a tad messy.