I'm doing some research on how companies use GitHub Enterprise (or public GitHub) internally. If you can help out by answering a few questions, I'd greatly appreciate it.
- What is the primary setup? Is there an organization and each official repo is owned by that organization?
- Does every engineer have a fork of each repo they're working on?
- Are engineers allowed to push directly to the official repo? Or must all commits go through a pull request?
- Do engineers work on feature branches on the main repo or on their own forks?
- Do you require engineers to squash commits and rebase before merging?
- Overall, what is the workflow for getting a new commit into the main repository?
- What sort of hooks do you make use of?
- Are there any ops issues you encountered? (Scaling, unforeseen downtime, etc.)
- Anything else worth noting?
Thanks very much for your feedback. I plan on coordinating all information into a blog post so we can all benefit from understanding these workflows.
Hey Nicholas, I'd be curious what the blog post yields.
What is the primary setup? Is there an organization and each official repo is owned by that organization?
Does every engineer have a fork of each repo they're working on?
Are engineers allowed to push directly to the official repo? Or must all commits go through a pull request?
Do engineers work on feature branches on the main repo or on their own forks?
Do you require engineers to squash commits and rebase before merging?
git pull --rebase
be set as a default setting but we don't enforce it. generally if you haven't pushed it it's okay to take updates from the remote and rebase your changes on top before pushing.Overall, what is the workflow for getting a new commit into the main repository?
Feature flow:
develop
during qa hardening milestones (integration / qa rounds / uat)master
Hotfix flow:
What sort of hooks do you make use of?
Are there any ops issues you encountered? (Scaling, unforeseen downtime, etc.)
Anything else worth noting?