Publishing course contents from a private repository
Asked by fpfenning:

I have the following situation:

* I have a (currently private) repo with materials for a course I am teaching, including lecture notes, homework assignments with sample solutions, and a small interpreter for students to write programs in an evolving course-specific toy language (plus a regression testing suite and examples)
* I would like to share the lecture notes, assignments (but not the solutions) and the interpreter source (but not the sample solutions, regression suite, or most program examples)
* Lecture notes, assignments, and the interpreter change rapidly as we go through the semester

Any advice on how to set up the repo or repos and how to manage them effectively, minimizing the possibility of error, and provide rapid updates for the students?


Answers:
author: Ana Retamal
body: Hi [@fpfenning](/t5/user/viewprofilepage/user-id/3736386),

Thanks for reaching out! I personally haven't used Bitbucket for these purposes before, but I'm going to throw some ideas that might help you achieve what you're looking for:

- As the contents are private, you'll need to grant access to your students. Regular accounts allow a maximum of 5 free accounts. If you qualify for an academic license, you can submit your application [here.](https://www.atlassian.com/company/contact/purchasing-licensing?_ga=2.250012742.1940752461.1598877084-165653393.1544177540)Otherwise, you can grant them read-only access (which will allow them to view, clone, and fork the repository code, create issues, comment on issues, and edit wiki pages, but not push changes) and they won't count towards your quota.

- For the things you don't want them to see, keep them in a separate repository.

- Depending on the contents and audience of your course, it might also be useful to have a simple website for an easy view. You can learn more about it at [Publishing a website on Bitbucket Cloud](https://support.atlassian.com/bitbucket-cloud/docs/publishing-a-website-on-bitbucket-cloud/).

Those are the things that come to mind. If you have any questions, let us know and we'll be glad to help :)

Best regards,

Ana

comments: author: fpfenning
body: Thanks, Ana, that's helpful. The follow-up question is how I divide the material between two different repositories when they conceptually belong together.

For example, the regression tests would seem to belong with the implementation, but the implementation should be public and the regression tests (or other advanced examples that might be related to homeworks) private.

Similarly, the sample solutions belong with the homework assignments because a change to one often implies a parallel change to the other, but one should be visible to the students while the other is not.

Is there a reasonable workflow where there is a master repo with everything (and remains private) and a derivative repo to which I can "publish" only those files that should be available to the students (and would be public)? I don't know git well enough to how set up the pair of repos and a reasonable set of scripts to keep them suitably synchronized. The idea would be to only directly change the private master repo and then export the visible changes to the derivative public repo.

Please let me know what you think.

Thanks,

Frank


Tags: bitbucket-cloud

cloud