git meanings of -distributed-
TRANSCRIPT
VonCStack Overflow(2008)
Git - Hg – SVN - ClearCase
Golang - Docker
Eclipse - Jenkins
Git: Distributed Version Control System
2005, Linus torvalds
“I’m an egotistical bastard, and I name all my project after myself.First Linux, now git[1]”
[1]: git (n): British slang for a stupid or unpleasant person
No authentication
Just a declaration (user.name/user.email)
Git: Local repository
Local repo
git config:user.nameuser.email
No timestamp
git checkout even used to reset timestamps
Git: Local repository
Local repo
git commitgit checkout...
Git: Upstream vs. Downstream
VCS: Version Control System
Downstream is local: Remote repoLocal repo
UPSTREAMDownstream
Git: Upstream vs. Downstream
“No git server” or “git client”:
Direct access through shared filesystem: UPSTREAM repo
\\shared\path
Git: Upstream vs. Downstream
“No git server” or “git client”:
Remote access through listeners: Remote repo
query
Git: Upstream vs. Downstream
Multiple upstream:
All known: Downstream
repoUPSTREAM
repos
git fetch
git fetch
Git: Upstream vs. Downstream
Multiple upstream:
Example: GitHub fork Downstream
repo
DOWNSTREAM
UPSTREAMrepos
git fetch
original repo
forked repo
git push
Git: Upstream vs. Downstream
Multiple downstream repos:
All unknown: Localrepo
UPSTREAMrepos
git fetch
git fetch
Downstreamsrepos
Recap: Local repository:
No authenticationBasic permission recordBasic timestamp record
Upstream vs. Downstream:No ListenersDownstreams unknownPublication workflow
Git: Full repository clone
You clone (almost) everything
All branches, all tags, all notes:
git clone
git fetch
Remote repoLocal repo
Git: Full repository clone
You clone (almost) everything
Not hooks or config though: Remote repoLocal repo
git clone/fetch/pullconfig
hooks
Git: Full repository clone
You clone what you need
Not “one giant unique repo”: Remote repoLocal repo
git clone
git clone
Git: Full repository clone
You do clone *all* the remote repo.
*All*: no authorization when reading:
git clone
git fetch
Remote repoLocal repo
Git: Full repository clone
You can put authorization when accessing the upstream repo.
I.E, add a “guardian” like gitolite: Remote repoLocal repo
git push
gitolite(perl)
git fetch
Git: Full repository clone
You can have audit when accessing the upstream repo.
I.E, gitolite can record git operations: Remote repoLocal repo
git push
gitolitegit fetch
Recap: Local repository:
No authenticationBasic permission recordBasic timestamp record
Upstream vs. Downstream:No ListenersDownstreams unknownPublication workflow
Full repository clone:No authorizationGitolite for authorization and auditSmaller-size git repos
Conclusion: Local repository:
No authenticationBasic permission recordBasic timestamp record
Upstream vs. Downstream:No ListenersDownstreams unknownPublication workflow
Full repository clone:No authorizationSmaller-size git reposGitolite for authorization and audit