|  | 
|  | 1 | +# Contributing guidelines for closed content | 
|  | 2 | + | 
|  | 3 | +This document describes the process for authoring "closed content", which is content of a sensitive nature that cannot be publicised before release. | 
|  | 4 | + | 
|  | 5 | +Sensitive content might include: | 
|  | 6 | + | 
|  | 7 | +- Security content, including personally identifying information (PII). | 
|  | 8 | +- Content / features that are not yet ready to be announced. | 
|  | 9 | + | 
|  | 10 | +We work in public by default, so this process should only be used on a case by case basis by F5 employees. For standard content releases, review the [Contributing guidelines](/CONTRIBUTING.md) | 
|  | 11 | + | 
|  | 12 | +## Overview | 
|  | 13 | + | 
|  | 14 | +This repository (https://github.com/nginx/documentation) is where we work by default. It has a one-way sync to an internal repository, used for closed content. | 
|  | 15 | + | 
|  | 16 | +The process is as follows: | 
|  | 17 | + | 
|  | 18 | +- Create a branch with the prefix `internal/` in the closed repository | 
|  | 19 | +- Open a pull request in the closed repository to get previews and request feedback | 
|  | 20 | +- Once all stakeholders are happy with changes, close the pull request in the closed repository | 
|  | 21 | +- Push the changes to the open (public) repository by adding the closed repository as a remote | 
|  | 22 | +- Open a new pull request in the open repository, where it can be merged | 
|  | 23 | + | 
|  | 24 | +You can get the URL through our internal communication channels: it will be represented in the following steps as `<closed-URL>`. | 
|  | 25 | + | 
|  | 26 | +To create closed content, first clone the internal repository: | 
|  | 27 | + | 
|  | 28 | +`git clone [email protected]:<closed-url>.git` | 
|  | 29 | + | 
|  | 30 | +Change into this new directory: | 
|  | 31 | + | 
|  | 32 | +`cd <closed-url>` | 
|  | 33 | + | 
|  | 34 | +Check out the `documentation` branch: | 
|  | 35 | + | 
|  | 36 | +`git checkout documentation` | 
|  | 37 | + | 
|  | 38 | +Create a feature branch, **ensuring that you prefix all branch names with `internal/`**: | 
|  | 39 | + | 
|  | 40 | +`git checkout -b internal/feature` | 
|  | 41 | + | 
|  | 42 | +You can then continue on as normal: | 
|  | 43 | + | 
|  | 44 | +```bash | 
|  | 45 | +# Make documentation changes | 
|  | 46 | +git add . | 
|  | 47 | +git commit | 
|  | 48 | +git push | 
|  | 49 | +``` | 
|  | 50 | + | 
|  | 51 | +Open a pull request when you are ready to receive feedback from stakeholders. | 
|  | 52 | + | 
|  | 53 | +After any iterative work, close the pull request. Since the closed repository is a mirror of the open one, we do not merge changes to it. | 
|  | 54 | + | 
|  | 55 | +You should instead open a pull request in the main repository by adding the closed repository as a remote. | 
|  | 56 | + | 
|  | 57 | +```bash | 
|  | 58 | +git clone [email protected] :nginx/documentation.git | 
|  | 59 | +cd documentation | 
|  | 60 | +git add remote internal [email protected] :< closed-url> .git | 
|  | 61 | +git fetch internal internal/feature | 
|  | 62 | +git checkout -b feature | 
|  | 63 | +git merge internal/internal/feature | 
|  | 64 | +git push origin feature | 
|  | 65 | +``` | 
|  | 66 | + | 
|  | 67 | +After the content changes have been merged in the open repository, they will synchronize back to the closed repository. | 
0 commit comments