Prehistory History Linux Git Conclusion
Decentralized Version Control Systems
Matthieu Moy
Verimag
2007
Matthieu Moy (Verimag) DVC 2007 < 1 / 43 >
Decentralized Version Control Systems Matthieu Moy Verimag 2007 - - PowerPoint PPT Presentation
Prehistory History Linux Git Conclusion Decentralized Version Control Systems Matthieu Moy Verimag 2007 Matthieu Moy (Verimag) DVC 2007 < 1 / 43 > Prehistory History Linux Git Conclusion Outline Motivations, Prehistory 1
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 1 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 2 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 3 / 43 >
Prehistory History Linux Git Conclusion
◮ “Oh, my disk crashed.” / “Someone has stolen my laptop!” ◮ “@#%!!, I’ve just deleted this important file!” ◮ “Oops, I introduced a bug a long time ago in my code, how can I see
Matthieu Moy (Verimag) DVC 2007 < 4 / 43 >
Prehistory History Linux Git Conclusion
◮ “Oh, my disk crashed.” / “Someone has stolen my laptop!” ◮ “@#%!!, I’ve just deleted this important file!” ◮ “Oops, I introduced a bug a long time ago in my code, how can I see
Matthieu Moy (Verimag) DVC 2007 < 4 / 43 >
Prehistory History Linux Git Conclusion
◮ “Oh, my disk crashed.” / “Someone has stolen my laptop!” ◮ “@#%!!, I’ve just deleted this important file!” ◮ “Oops, I introduced a bug a long time ago in my code, how can I see
◮ Replicate:
Matthieu Moy (Verimag) DVC 2007 < 4 / 43 >
Prehistory History Linux Git Conclusion
◮ “Oh, my disk crashed.” / “Someone has stolen my laptop!” ◮ “@#%!!, I’ve just deleted this important file!” ◮ “Oops, I introduced a bug a long time ago in my code, how can I see
◮ Replicate:
◮ Keep history:
Matthieu Moy (Verimag) DVC 2007 < 4 / 43 >
Prehistory History Linux Git Conclusion
◮ “Oh, my disk crashed.” / “Someone has stolen my laptop!” ◮ “@#%!!, I’ve just deleted this important file!” ◮ “Oops, I introduced a bug a long time ago in my code, how can I see
◮ Replicate:
◮ Keep history:
◮ Keep a description of history:
Matthieu Moy (Verimag) DVC 2007 < 4 / 43 >
Prehistory History Linux Git Conclusion
◮ With file granularity ◮ With finer-grained (diff)
◮ Standalone tools: rsync, rdiff-backup, . . . ◮ Versionned filesystems: VMS, Windows 2003+, cvsfs, . . . Matthieu Moy (Verimag) DVC 2007 < 5 / 43 >
Prehistory History Linux Git Conclusion
1
2
3
Matthieu Moy (Verimag) DVC 2007 < 6 / 43 >
Prehistory History Linux Git Conclusion
1
2
3
Matthieu Moy (Verimag) DVC 2007 < 6 / 43 >
Prehistory History Linux Git Conclusion
1
2
3
◮ Never two person work at the same time. When one person stops
Matthieu Moy (Verimag) DVC 2007 < 6 / 43 >
Prehistory History Linux Git Conclusion
1
2
3
◮ Never two person work at the same time. When one person stops
◮ People work on the same directory (same machine, NFS, . . . )
Matthieu Moy (Verimag) DVC 2007 < 6 / 43 >
Prehistory History Linux Git Conclusion
1
2
3
◮ Never two person work at the same time. When one person stops
◮ People work on the same directory (same machine, NFS, . . . )
◮ People lock the file when working on it.
Matthieu Moy (Verimag) DVC 2007 < 6 / 43 >
Prehistory History Linux Git Conclusion
1
2
3
◮ Never two person work at the same time. When one person stops
◮ People work on the same directory (same machine, NFS, . . . )
◮ People lock the file when working on it.
◮ People work trying to avoid conflicts, and merge later. Matthieu Moy (Verimag) DVC 2007 < 6 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 7 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 7 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 7 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 7 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 8 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 8 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 8 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 8 / 43 >
Prehistory History Linux Git Conclusion
◮ User makes modification and use commit to keep a snapshot of the
◮ Meta-data (user’s name, date, descriptive message,. . . ) recorded
◮ Each user works on its own copy, ◮ User explicitly “takes” modifications from others when (s)he wants. Matthieu Moy (Verimag) DVC 2007 < 9 / 43 >
Prehistory History Linux Git Conclusion
◮ User makes modification and use commit to keep a snapshot of the
◮ Meta-data (user’s name, date, descriptive message,. . . ) recorded
◮ Each user works on its own copy, ◮ User explicitly “takes” modifications from others when (s)he wants.
◮ At least at file level (git unpacked format), ◮ Usually store a concatenation of diffs or similar. Matthieu Moy (Verimag) DVC 2007 < 9 / 43 >
Prehistory History Linux Git Conclusion
◮ User makes modification and use commit to keep a snapshot of the
◮ Meta-data (user’s name, date, descriptive message,. . . ) recorded
◮ Each user works on its own copy, ◮ User explicitly “takes” modifications from others when (s)he wants.
◮ At least at file level (git unpacked format), ◮ Usually store a concatenation of diffs or similar.
◮ Set of revisions recorded, but not visible in mainline, ◮ Can be merged into mainline when ready. Matthieu Moy (Verimag) DVC 2007 < 9 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 10 / 43 >
Prehistory History Linux Git Conclusion
◮ 1 repository (contains all about the history of the project) ◮ 1 working copy per user (contains only the files of the project)
◮ checkout: get a new working copy ◮ update: update the working copy to include new revisions in the
◮ commit: record a new revision in the repository Matthieu Moy (Verimag) DVC 2007 < 11 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 12 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 13 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 14 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 15 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 16 / 43 >
Prehistory History Linux Git Conclusion
◮ Atomic, tree-wide commits (commit is either successful or unsuccessful,
◮ Rename management, ◮ Optimized performances, some operations available offline.
Matthieu Moy (Verimag) DVC 2007 < 17 / 43 >
Prehistory History Linux Git Conclusion
◮ Atomic, tree-wide commits (commit is either successful or unsuccessful,
◮ Rename management, ◮ Optimized performances, some operations available offline.
Matthieu Moy (Verimag) DVC 2007 < 17 / 43 >
Prehistory History Linux Git Conclusion
◮ Allowing anyone on earth to commit compromises the security, ◮ Denying someone permission to commit means this user can not use
◮ Constraint acceptable for private project, but painful for Free Software
Matthieu Moy (Verimag) DVC 2007 < 18 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 19 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 20 / 43 >
Prehistory History Linux Git Conclusion
◮ Short life: work on a feature in a branch, request merge when ready. ◮ Long life: things that are unlikely to get into the official kernel before
◮ Test, debug: a modification goes through several branches, is tested
◮ Distributor: Most distributions maintain a modified version of Linux
Matthieu Moy (Verimag) DVC 2007 < 21 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 22 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 22 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 22 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 23 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 24 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 25 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 26 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 27 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 28 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 28 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 29 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 30 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 31 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 31 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 31 / 43 >
Prehistory History Linux Git Conclusion
◮ As a contributor, you started working on a feature in your own
◮ Your feature is completed, upstream wants to merge it.
Matthieu Moy (Verimag) DVC 2007 < 32 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 33 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 33 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 34 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 35 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 36 / 43 >
Prehistory History Linux Git Conclusion
◮ Possibility to revert to a previous revision, ◮ Makes it easy to review your own code (before committing), ◮ Synchronization of multiple machines.
◮ One can work without disturbing others, ◮ Merge is automated. Matthieu Moy (Verimag) DVC 2007 < 37 / 43 >
Prehistory History Linux Git Conclusion
◮ Possibility to revert to a previous revision, ◮ Makes it easy to review your own code (before committing), ◮ Synchronization of multiple machines.
◮ One can work without disturbing others, ◮ Merge is automated.
Matthieu Moy (Verimag) DVC 2007 < 37 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 38 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 39 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 40 / 43 >
Prehistory History Linux Git Conclusion
◮ Version Control = User side (manual creation of project, manual add
◮ Backup = System Administrator side (cron job, backing up everything) Matthieu Moy (Verimag) DVC 2007 < 41 / 43 >
Prehistory History Linux Git Conclusion
◮ Multiple machines for normal work ◮ Multiple sites for important work (are you ready to loose you thesis if
Matthieu Moy (Verimag) DVC 2007 < 42 / 43 >
Prehistory History Linux Git Conclusion
Matthieu Moy (Verimag) DVC 2007 < 43 / 43 >