Aga
What is wrong with “A successful Git branching model”?
More powerful history browsers to "lola": * gitk (graphical, developed in git's own repo) https://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to... * tig (console) http://jonas.nitro.dk/tig/manual.html
One correction: Git does not store changes at all. It stores all the versions of files as separate "blobs". What keeps .git small, is that Git compresses the object database to pack-files. "git gc" does this for you.
Pro Git has a great chapter about how Gits internals work: https://git-scm.herokuapp.com/book/en/v2/Git-Internals-Plumb...
This picture sums the model nicely: https://git-scm.herokuapp.com/book/en/v2/book/10-git-interna...
For me studying Git internals has been a good lesson in software design. Git's core is very simple, yet somehow that makes it a really versatile tool.
Shawn Pearce, the author of Gerrit, explains why he thinks Prolog is well suited for this: https://groups.google.com/forum/#!msg/repo-discuss/wJxTGhlHZ...
If I can't understand from the commit message, what the change is trying to achieve, I won't even look at the code. Instead I'll ask to clarify the commit message first.
In all cases, there has been a lot of initial scepticism and worries.
Some things that I feel have contributed to people accepting code review, are: 1) Gerrit enforces code review, you have to get it done somehow, in order to get your changes in. It's integrated in the workflow. 2) You choose your own reviewers. 3) We have had a clear message, that code review is about communication, knowledge sharing and bug hunting is just an added bonus. And communication is always our biggest problem in big projects. Just by letting someone do code review of your changes, the knowledge inside the organization about the change has almost doubled. 4) We ask people to treat code review request as number one priority, as the changes can not get in before it.
Before Gerrit we tried to encourage the culture by using Reviewboard [2], but in our case it just wasn't used that much. People did not treat review request as a high priority. Maybe because it was not enforced and sometimes you'd do a review for a change that the developer already merged in.
It's interesting to see how small tricks can change peoples behaviour...
[1] http://code.google.com/p/gerrit/ [2] http://www.reviewboard.org/
How To Ask Questions The Smart Way
I've been asked many times by units (big corporation) if this would be a good branching model for them when they are migrating to Git. I always tell them it's probably too complicated for their situation. Most of the units are trying to implement some form of Continuous Integration. Obfuscating that with complex branching models would only confuse them. Only when they encounter a real problem, that could be solved with this branching model, I suggest they try this out. I haven't still seen it happen.
However I must say, that the situation might be different in different types of projects. I've seen only these kind of CI-projects with a couple of hundreds developers with long lead times.
I hope this catches fire like Airbnb! At least here in Finland "Restaurant Day" [1] has already become somewhat of an institution, so I bet there's potential for Cookening too!
A minor detail: I'd appreciate the _full_ price to be displayed with a side note like "including Cookening service free 3€".
Or is the service fee per group? In that case it could be something like: "15€ per guest + 3€ Cookening service fee per group"
With the current layout the service fee feels almost hidden.
Best of luck with this!
As important as QA is to keep others in the project aware of the latest changes.
It's times like this when people stop to think about other human beings and might actually act on something. Unfortunately during normal times we are really bad at that.
I guess the most notable difference between Arch and Unbuntu is Arch's quest for simplicity as a system, where Ubuntu tries to be simple for the "common man" by abstracting implementation details, adding to overall complexity of the system.
The critique is quite well established. One needs to understand these quirks to be an enlightened Git user.
However we make up with them, as the overall gain from Git's approach to version control is so big.
Some things could be improved though, like introduce something like "git branch --current" to avoid the Hobgoblin...
From the git rebase man-page, --merge: Note that a rebase merge works by replaying each commit from the working branch on top of the <upstream> branch. Because of this, when a merge conflict happens, the side reported as ours is the so-far rebased series, starting with <upstream>, and theirs is the working branch. In other words, the sides are swapped.
https://www.kernel.org/pub/software/scm/git/docs/git-rebase....
(however I have not tested it on an OS X)
Questions 10-15 are relevant and show a quite wide variety of different tools people use. GUI's seem to be popular too.
That, and constantly creating your own test repositories to test new commands/concepts. With a distributed VCS it's easy and fast. Just run "git init test" somewhere and start committing!
I also recommend you to use "gitk" when you're learning to constantly look at your history tree. That should clarify the concept "branches are pointers" after a few tests.
Git checkout is a command to read something from your .git-folder to your working directory.
Especially for people coming from ClearCase, the concept of Git checkout needs to be clarified as fast as possible. (In CC checkout means you make an element (file) editable for you, and possibly reserve it to you too)
A better solution would be to paste the text in to an editor.
An example is at a concert or club where more people are holding devices then dancing.
I've started carefully choosing where to take my camera with, as I'll be completely absorbed in taking photographs, later not having "real" memories of the event at all.
A classical xkcd sums up my feelings about this quite nicely: http://xkcd.com/77/
For those moody evenings and nights a nice choice is "You are listening to" It combines ambient tracks from Soundcloud and police/fire department/etc. radios: http://youarelistening.to/
I'd like to couple this attitude with the great advice of having "Strong opinions, weakly held". (http://bobsutton.typepad.com/my_weblog/2006/07/strong_opinio...)
I find it easy to teach, thanks the concepts being simple and clear. I don't have to transfer a lot of information before people can start reasoning about things themselves and independently finding out more.
I always try to make sure people understand two things:
1) The history tree (==how to read the metro-map that is gitk)
2) Distribution, that you are responsible for syncing with others, not the other way round
Almost everything else I prefer the students at least try to figure out themselves.
I would argue that in the case of Git it's not about a single design decision. The whole design is very simple and easily understandable. Thus everything can be derived from the design decisions.
The design decisions also have clear rationales.
"Why something is better" and "why something has "won"" are of course different questions that deserve different answers.
No mention of knowing the lens makers daughter though...
For any given project, no matter how distributed the development, you will have a "blessed" repository, from which the official releases are made. The history of this "blessed" repository is made not rewritable, even if anyone can push new stuff to it. The config files and hooks can be made writable by only admins.
Or you use a maintainer model, where the "blessed" repository is not even pushable. A maintainer (or a group of them) chooses what he merges in.