- Eve has a repository, Alice and Bob have access to it. Eve goes on vacation and nobody commits to "master"/"trunk".
- Alice makes a branch "alice-fixes" and creates commits on it.
- Bob comes and creates a branch "bob-features" from some point from "alice-fixes".
- Bob then merges "bob-features" into "master" and deletes it.
- Alice gets fired and her branch is deleted without merging.
In git, you can't see that some of the commits in the history came from "alice-fixes". Fossil, on the other keeps track of branch names and _changes_ in commits:
When Alice created her branch: -trunk +alice-fixes
When Bob created his branch: -alice-fixes +blob-features
When Bob merges his branch: -bob-features +trunk
You can't delete this information, because it's recorded in the commit artifacts. You can't delete branches — you can only close and hide them (you can also apply edits to commits by adding "edit" artifacts [don't remember what the are called], but the history is preserved, not modified.)
I think that is just an example of losing the branch name, the commit history is the same in both cases.
If you really want that behavior from git, you can have it, just create a tag for each branch HEAD. Actually I think this is all that fossil does as well.
It's not the same, there's no commit indicating that Bob branched off Alice's branch. It appears as if the whole history before merging belongs to Bob's branch. There is such commit in Fossil.
> If you really want that behavior from git, you can have it, just create a tag for each branch HEAD. Actually I think this is all that fossil does as well.
Fossil has branch/tag name directly in the checkin manifest (I've linked to the document describing file format somewhere above.) Tag and branch names are embedded directly in the history, they are not separate references to commit hashes like in git.
- Eve has a repository, Alice and Bob have access to it. Eve goes on vacation and nobody commits to "master"/"trunk".
- Alice makes a branch "alice-fixes" and creates commits on it.
- Bob comes and creates a branch "bob-features" from some point from "alice-fixes".
- Bob then merges "bob-features" into "master" and deletes it.
- Alice gets fired and her branch is deleted without merging.
In git, you can't see that some of the commits in the history came from "alice-fixes". Fossil, on the other keeps track of branch names and _changes_ in commits:
When Alice created her branch: -trunk +alice-fixes When Bob created his branch: -alice-fixes +blob-features When Bob merges his branch: -bob-features +trunk
https://imgur.com/a/yRxAD
You can't delete this information, because it's recorded in the commit artifacts. You can't delete branches — you can only close and hide them (you can also apply edits to commits by adding "edit" artifacts [don't remember what the are called], but the history is preserved, not modified.)