# Distributing Lectures

## Option 1: Distribute using nbgitpuller

See [nbgitpuller page](/archive/jupyterhub/content-sync-via-link/nbgitpuller.md) to see how to generate links for distributing your repository

{% hint style="danger" %}
You should **not** use nbgitpuller when:

1. You are an instructor using a JupyterHub / running notebooks locally to create materials and push them to a git repository. You should just use git directly, since the assumptions and design of nbgitpuller **will** surprise you in unexpected ways if you are pushing with git but pulling with nbgitpuller.
2. Your students are performing manual git operations on the git repository cloned as well as using nbgitpuller. Mixing manual git operations + automatic nbgitpuller operations is going to cause surprises on an ongoing basis, and should be avoided.
   {% endhint %}

## Option 2: Distribute one lecture materials as assigments

1\. Have the materials for one lecture in a repository\
2\. Distribute as assignment, with its own link, and no deadline

### Advantages

* Students can stay as outside collaborators for ever.
* There is no special consideration for shopping period
* All of their lecture work is automatically set up in your organization … with a default place for them to work there are less chances for them to be pushing it to their own public GitHub…
* Less management of merging conflicts and remotes

### Disadvantages

* There will be a lot of repositories in the organization.
* No simple mechanism for pushing changes after distributiom

## Option 3: All lectures in one repository

![Lecture Workflow](/files/pH8HpEH0zAZ7xrAabjhQ)

**During shopping period:**

1. Set up the lectures to be public
2. Students clone and pull from public repository
3.

**After shopping period:**

1\. Have a first assigment to generate a link.\
2\. Students that accept the link become **outside collaborators** in your organization\
3\. Invite the students to join the organization.\
4\. You should make a team for the students and give them read access to the private lecture repository\
5\. As members of the organization, they can create a repository to push their personal changes to the lectures. In order to sync with their own repository and with yours, they will need to set up two remotes. See <https://help.github.com/articles/adding-a-remote/> for more help\ <br>

###


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ccv.brown.edu/archive/jupyterhub/github-classroom-instructor-guide/distributing-lectures.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
