[Vm-dev] the purpose of CI

Milan Vavra vavra_milan at yahoo.com
Sun Jun 4 15:41:44 UTC 2017


> The commit is related to a graph of previous commits, right? So a branch
> implies a distinct set of commits, right? When one merges from a branch,
> the commits on the branch don't get added to the target into which one
> merges do they Isn't that the difference between pull and pull -a, that
> the former just pulls commits on a single branch while pull -a p;pulls
> commits on all branches?

Git repository is just a big key-value store. Keyed under SHA1 of their
contents, the following kinds of values are stored - files, trees
objects and commit objects. Files are themselves. Tree objects contain
list of files and other tree objects. Commit objects contain a list of
other commit objects and tree objects.

I think it is nicely explained in the official git book: 
https://git-scm.com/book/en/v2/Git-Internals-Git-Objects[10.2 Git Internals
- Git Objects].


Commits are lists of SHA1s of other objects in the store. Each commit
stores the SHA1 for its ancestor commit and/or any merged in commit.

Each branch is a pointer to a SHA1. When you commit to a branch, a new
commit object is created. The object for the commit is stored under its
SHA1 and the branch pointer is set to this new SHA1.

Any commit you know the SHA1 of can be compared/merged to/from any other
commit you know the SHA1 of.

The branches serve just like a pointer to a SHA1 that gets moved each
time you make a commit to the branch. Since each commit contains a
pointer the SHA1 of its ancestor and any commit merged from, you can
walk the history with 'git log SHA1'.

When you merge a commit, both the ancestors' SHA1 and the merged's SHA1
are added to the list of SHA1s that form the commit.

Best Regards,

Milan Vavra




--
View this message in context: http://forum.world.st/the-purpose-of-CI-tp4948482p4949264.html
Sent from the Squeak VM mailing list archive at Nabble.com.


More information about the Vm-dev mailing list