Implements branch support by only extending the existing functionality. Note that the existing functionality DOES NOT implement a parent pointer for commits, and as a result branches are also implemented differently to how git implements them.
git branches are simply a named pointer to a commit object (which then has a pointer to its parent commit), here branches store the entire sequence of pointers to commit objects.
Why different to git?
I made a mistake in the initial implementation by using a TreeSet instead of manually implementing a tree for commits. This allowed the ability to insert commits in-between other commits, which isn't normally possible in gitwithout rebasing which changes commits' hashes.
The specification for this feature stated:
All functionality that is implemented already should be preserved.
And so since I cannot remove this functionality any more, I have to build on top of it.
Closes #6.
Implements branch support by _only extending_ the existing functionality. Note that the existing functionality DOES NOT implement a `parent` pointer for commits, and as a result branches are also implemented differently to how git implements them.
git branches are simply a named pointer to a commit object (which then has a pointer to its parent commit), here branches store the entire sequence of pointers to commit objects.
### Why different to git?
I made a mistake in the initial implementation by using a `TreeSet` instead of manually implementing a tree for commits. This allowed the ability to insert commits in-between other commits, which isn't normally possible in `git` _without rebasing which changes commits' hashes_.
The specification for this feature stated:
> All functionality that is implemented already should be preserved.
And so since I cannot remove this functionality any more, I have to build on top of it.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #6.
Implements branch support by only extending the existing functionality. Note that the existing functionality DOES NOT implement a
parentpointer for commits, and as a result branches are also implemented differently to how git implements them.git branches are simply a named pointer to a commit object (which then has a pointer to its parent commit), here branches store the entire sequence of pointers to commit objects.
Why different to git?
I made a mistake in the initial implementation by using a
TreeSetinstead of manually implementing a tree for commits. This allowed the ability to insert commits in-between other commits, which isn't normally possible ingitwithout rebasing which changes commits' hashes.The specification for this feature stated:
And so since I cannot remove this functionality any more, I have to build on top of it.