Skip to content
This repository has been archived by the owner on Jan 3, 2018. It is now read-only.

Splitting novice/shell into an independent repository #812

Closed
wking opened this issue Oct 22, 2014 · 6 comments
Closed

Splitting novice/shell into an independent repository #812

wking opened this issue Oct 22, 2014 · 6 comments

Comments

@wking
Copy link
Contributor

wking commented Oct 22, 2014

@gvwilson just gave us the green light for splitting out this lesson (see the meeting summary, blog post, and the #759 meta-issue). @tbekolay, @embray, and @twitwi offered to help with the Git wrangling, and @gdevenyi and @ChristinaLK are the Bash maintainers, so that's all the interested parties I know about. If anyone wants to ping someone else with a stake in this, please do.

The plan is to create an orphan branch for the novice shell content, and cherry-pick in stuff from bc (and possibly other repositories) to capture the development of that content without the distraction of the rest of bc. We can get a start with:

$ git checkout -b novice-shell origin/master
$ git filter-branch --subdirectory-filter novice/shell --prune-empty

which gives me the 42 commits touching that stuff. It misses everything before b8c7dc3 (Reorganizing material to put novice + intermediate at top level, 2014-02-16) though, since before that the content was in shell/novice/. The work will mostly be to trace the content back in time, identifying breaks like this, finding the code on the other side of the break, and grafting everything together until we've collected a more-or-less complete picture of how we got to where we are now.

We can also take the opportunity to clean up some nonstandard commit messages like 8690c74 (In the novice shell lesson 03-pipefilter, changed sort to sort -n. In the lesson , the "sort" command is used to demonstrate sorting line counts. The lesson as written …, 2014-06-12) that skip the usual newline after the message summary, or skipped the summary altogether ;). In those cases (or when cherry-picking), it's best to add a note to the commit message describing your changes.

I have the original Hacker-Within example data already factored out (see #114) although there may have been subsequent development since then. I'm not sure if any of that content is used in the novice lesson though.

So the plan is to start researching and isolating this history. I've put the results of that initial filter-branch call here so we can all collaborate on them. Open an issue, pull request, or branch on your own fork as we work on this, so we can avoid duplicating work and keep up with all the rebasing. Ping me on Mozilla's #sciencelab if you want to chat about some Git gymnastics ;).

@wking
Copy link
Contributor Author

wking commented Oct 22, 2014

@gdevenyi and @ChristinaLK, a feature freeze on bc's novice/shell while we're factoring out the history would be good, so we don't have to reconstruct a moving target ;). Folks who need new stuff for a particular workshop can always merge an in-flight PR branch directly, and I'm happy to talk them through that process on #sciencelab.

@gdevenyi
Copy link
Contributor

I'll make sure we don't merge anything new to bc/shell.

I believe at last check there's nothing pending because we resolved or delayed the requests and issues.

@wking
Copy link
Contributor Author

wking commented Dec 13, 2014

@gdevenyi and @ChristinaLK (and any other interested parties), I think
we're ready for review here. Exact matching is difficult because of
the overlapping post-freeze merges in swcarpentry/shell-novice#1 and
#789. But here's a comparison between my current extracted history
and the current gh-pages:

$ diff -u <(git ls-tree -r bc/gh-pages novice/shell | sed 's|novice/shell/||') <(git ls-tree -r modular-shell/master)
--- /dev/fd/63 2014-12-13 12:09:18.794852194 -0800
+++ /dev/fd/62 2014-12-13 12:09:18.794852194 -0800
@@ -1,6 +1,6 @@
100644 blob 502b1bff4ba9bcdb9e90e297f071b28c75bbf180 00-intro.md
100644 blob 4e6eb8af03f5ab92551f58c6b7be9fd28e24cf9d 01-filedir.md
-100644 blob f67f0b6dce84b217141af5703383668ca1422487 02-create.md
+100644 blob 105cf6a4d5117a9d4194cc22566d338edc5fa6ec 02-create.md
100644 blob 64fca04026d0a7ba22f2727c7ddd4eb6231fcf17 03-pipefilter.md
100644 blob 9cae0845bc59f1a8dd4c1dbeb6309f52b26aea4a 04-loop.md
100644 blob 798f415922701183977e68ee8f95e3c7f53d906b 05-script.md
@@ -212,6 +212,7 @@
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 filesystem/users/thing/backup/2013-01-27/backup.log
100644 blob 46f7b0914306f602e25e55fcd58757ec39167afe gen-nene.py
100644 blob d3c5d6fa9cf61d8fe1ba3deb65595342a0be0217 gen-sequence.py
+100644 blob c8851e9f6530f2ccd989ed3aa2e772287754ae6a guide.md
100644 blob c3bf2526efc6bda4b0504400120eb2dac33019f7 img/filesystem-challenge.odg
100644 blob 9e5f34ab0ea7410f74eb0d6745a686eeb4a5e410 img/filesystem-challenge.png
100644 blob 9c077f0cea68c310e9c2034319b3dfd1e9135c17 img/filesystem-challenge.svg
@@ -229,3 +230,4 @@
100644 blob 50fb17107358633a59e6b8c40940ff4362aab476 img/nano-screenshot.png
100644 blob e6da02e2b382f5a609a9a64d5c37cea068f0acae img/vlad-homedir.png
100644 blob b3e71560d90f26192d1ac7ff1150c6cc24de4a81 index.md
+100644 blob cbc9b2795a84c2f0e1771e294fa6a0cfb9acee5b reference.md

The differences in 02-create.md (bc/gh-pages has f67f0b6d and
modular-shell/master has 105cf6a4) are due to
swcarpentry/shell-novice#1:

$ git show 'modular-shell/master^{/Minor wording changes}' | grep -A1 diff
diff --git a/02-create.md b/02-create.md
index f67f0b6..105cf6a 100644

guide.md and reference.md match bc's gh-pages, except in bc the files
are outside novice/shell/ (see swcarpentry/shell-novice#27 for details
on extracting them):

git ls-tree bc/gh-pages novice/teaching/02-shell.md
100644 blob c8851e9f6530f2ccd989ed3aa2e772287754ae6a novice/teaching/02-shell.md
$ git ls-tree bc/gh-pages novice/ref/01-shell.md
100644 blob cbc9b2795a84c2f0e1771e294fa6a0cfb9acee5b novice/ref/01-shell.md

The bc hashes are the same as the extracted history's hashes for those
files (c8851e9f… and cbc9b27…). So that means the current content
matches what we have in bc/gh-pages for the novice shell. I'm less
sure about the history, although I've done my best to keep track
during the extraction (see wking/swc-modular-shell/#2). If anyone
knows of missing work, or wants to check the extracted history for
their work, that would be great.

There are also a number of open checkboxes in
wking/swc-modular-shell/#2 that I'd like to have closed, but haven't
had the time to (or haven't had the resources for, see
swcarpentry/shell-novice#14). I'd also like confirmation from @mestato
and @BernhardKonrad that my edits to their commit messages are ok 1.
However, I don't expect there will action on these fronts soon, so we
may just want to give up on them and move on.

Once we approve the extracted history, I can go through and merge the
pending pull requests that have been green-lighted by the maintainers
during the freeze (e.g. 2). Then we can migrate this over to a
swcarpentry namespace and start translating it into the new
lesson-template format.

@gdevenyi
Copy link
Contributor

I'm going to be honest here, I'm not really qualified to review the history extraction. @wking has done an exceptional job at crunching through this and I trust he's done his best. It looks like the current state of the repo is consistent with bc, so we can move forward with this as bc depreciates.

@gvwilson
Copy link
Contributor

Good enough for me - I'll extract into a separate repository once the outstanding PRs are merged. Thank you @wking for all your hard work.

dlebauer added a commit to dlebauer/bc that referenced this issue Dec 16, 2014
I am assuming that if this were completed, there would be evidence in the mailing list, as a new release, or at least in the commit history. 

What is the status? Could there be a milestone, that the README can point to, with a list of associated issues (swcarpentry#812? swcarpentry#253?, others?) so future readers can find the status?
@wking
Copy link
Contributor Author

wking commented Dec 18, 2014

https://github.com/swcarpentry/shell-novice is past the history extraction stage, so I'm closing this.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants