-
-
Notifications
You must be signed in to change notification settings - Fork 381
Construct intermediate Git lesson. #127
Comments
On Sat, Nov 02, 2013 at 09:01:57AM -0700, Greg Wilson wrote:
I've got @jiffyclub's instructor-notes for Git-on-GitHub along with my |
My notes are at https://github.com/UCL/ucl_software_carpentry/blob/master/git/git_instructions.md feel free to use them. (CC-BY) Figure assets are at https://github.com/UCL/ucl_software_carpentry/tree/master/build/reveal/assets generated using https://www.websequencediagrams.com/ API. |
Based on where @gvwilson is planning on stopping with the Intro material I'm thinking of the following as being the core of the Intermediate Git lesson:
Basically we would assume that folks are generally familiar working solo, without using branches, but using remotes. We would then teach them how to branch, work collaboratively, and do some level of release work (i.e., via simple tagging and relying on GitHub's release mechanism. Is there other stuff we should consider including for a half a day on Intermediate Git? There are certainly lots of good existing resources for this kind of material and we should choose one of the available options and adopt it to our needs if possible. Since we're at the intermediate level I think it would be best to use code examples. If we do this then we need to develop code examples that are easily swappable for R/Python since there will be workshops teaching both as for the programming component. |
I think we need to rewrite the entire approach to Git from the ground up. Recent experience teaching Git (and answering questions on our mailing list and elsewhere) is that we need to teach branching much, much earlier. I agree that advanced GitHub flow goes here, as well as more of the etiquette and norms for contributing and working with open source projects here. I'll ping back when I have done some more work on this, please keep me in the loop when developing these lessons and I'll try to keep my eyes on this. |
Two quick thoughts:
|
I'm curious to hear your thoughts on this. My general feeling is that with the average room of version control novices you can cover the basics and then either branching or remotes in half a day. In #146 @gvwilson has taking the approach of teaching remotes which makes it possible to teach conflicts. In this context I guess you're suggesting that we teach local branching instead of remotes/conflicts in the Novice lesson?
Definitely. In fact I was planning on seeing if you'd be interested in writing some of them :) |
I believe the idea here is that each bootcamp is not Novice or Intermediate, but that each section can be selected as Novice or Intermediate. So the host would basically be saying that all the participants will have some background in the topic if we do an Intermediate version. That said, I definitely think that any Intermediate lesson should re-introduce the basics at an accelerated pace to make sure everyone is up to speed.
This certainly works great for a first introduction. I guess the concern is that we're trying to show them how to use this for code, so at the intermediate level we should actually show it to them with code so they get a feel for the natural process. That said, I'm certainly open to doing something different. |
Thanks for pointing me to #146, somehow I missed that PR. Yes, here's the rough overview of how I want to do things differently (across both beginner and intermediate):
If beginners get here, they just need a little more (pulling changes, push) before they're fully functional and hopefully can read StackOverflow questions and other documentation to get more help. I've helped one too many people who didn't understand what branches were to skip them in the first 1.5 hours of Git instruction. Also, understanding the feature branch workflow early will, I believe, help the learners in the long run. Almost every piece of knowledge learners have about previous version control systems eventually hurts them when working with Git. I doubt we are going to be teaching any intermediate Git courses any time soon, so I'll be focusing my efforts on writing a ground-up lesson. Update: A dump of the order I go through commands is available from this Etherpad, but I need to write the lesson up in longform. |
On Fri, Nov 22, 2013 at 12:58:41PM -0800, Aron Ahmadia wrote:
This may be due to the alarming phrasing ;).
I'd flip the order here, and talk about local branches first.
I'm not sure where merging and conflict resolution land in your I agree that embracing branches as a movable commit nickname as early
into the training repository to help clarify the idea before students |
It's an interesting idea of putting some of the more core theory of git earlier in the process. But I'm sceptical that most novice scientists will respond well to things like talking about SHA1 hash, HEAD, detached HEAD, etc. before getting further into using version control. I know it's important for understanding what's going on, but putting this stuff in the first half a day is going to have a lot of scientists thinking "why do I need to know all of this?" and (more problematically) "this is all too complicated I guess I'm not smart/computery enough to use version control." The fact that you need to use That said, I think this would be great material in an intermediate lesson that assumes previous use of version control. In fact since the intermediate material should start with a basic review of git (which also serves as an introduction for those who use something else) that introduction of the basics would be a natural place teach these core concepts that people need to really understand what is going on. |
On Fri, Nov 22, 2013 at 12:58:41PM -0800, Aron Ahmadia wrote:
Looking over this, the meaning of a. explaining the change in push semantics, or In the interest of simplicity (and following PEP 20 2), I'm in favor |
+1 |
Some progress here: https://github.com/ahmadia/bc/compare/swcarpentry:master...git-intermediate?expand=1 Longform is hard :( |
On Sun, Dec 01, 2013 at 07:50:06PM -0800, Aron Ahmadia wrote:
I'm concerned that there are over 300 lines of content and you've only
From your Etherpad notes 1, you still want to cover:
Besides the risk of running over on time, I think culling the content
I also think the list of version-control motivators:
Should be simplified to:
I like the conversational-Git approach, and I think one benefit is
I'd also throw in figure 1-5 and it's “snapshot” view for extra
Then I'd introduce commits and the staging area using a graphic like I'd introduce the concepts with graphics before I mentioned the Git I can write this up as long-form notes if you'd like, or you can |
Thanks. This feedback is super helpful. Give me a couple of days to digest On Saturday, December 7, 2013, W. Trevor King wrote:
|
Looks like a great start! Thanks for tackling this and sorry I've been so slow in looking at it. I should be much more available the next couple of weeks I agree with @wking that the introduction could be tightened up and am generally +1 on his suggestions. Since the target audience is folks who already have some experience with version control I think you can shorten the intro substantially. We should still very briefly motivate version control, but these folks have already drunk the coolaid so I don't think we need a introductory story or a lot of detail on why they should use version control. We aren't assuming that they've used distributed version control so a few sentences in the intro about the big picture differences/benefits of distributed vs. centralized version control might be useful.
+1 |
@ahmadia is this something you'll have some bandwidth to work on in the next month or so? I ask because I'm getting ready to put out a call for help developing the intermediate material later this week and I'll either flag this as being something you're handling or ask for help depending on whether you'd like it or not. Clearly I'm quite understanding of limited time given my slow progress on the Python material, just wanted to see what you'd like me to do when advertising for help. |
This should be done within the next week, actually :) Thanks for the ping. On Tue, Jan 14, 2014 at 4:35 PM, Ethan White [email protected]:
|
Awesome! |
This landed in #243, so I'm closing this issue. |
Construct lesson on Git for intermediates in
git/intermediate
.The text was updated successfully, but these errors were encountered: