|
|
General Idea
|
|
|
------------
|
|
|
|
|
|
* A group is created for each CE
|
|
|
* CE coordinators are Maintainer of the CE group and can
|
|
|
* Fork VTM into their group
|
|
|
* Create branches
|
|
|
* Assign Developer (write) or Reporter (read) access to users.
|
|
|
|
|
|
Workflow for CE coordinators
|
|
|
----------------------------
|
|
|
**Note:** CE development does not require an internal account.
|
|
|
|
|
|
First steps:
|
|
|
* (create an account)
|
|
|
* Contact SW coordinators to get CE maintainer status
|
|
|
* Log in into your account
|
|
|
|
|
|
Forking the main repository:
|
|
|
* Go to
|
|
|
* the [jvet/VVCSoftware_VTM](https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM) repository page for VTM
|
|
|
* Press the **fork** button
|
|
|
* Select the correct CE group as destination
|
|
|
* You will automatically be redirected to new fork
|
|
|
|
|
|
Creating branches:
|
|
|
* On the CE project page (e.g. JEVT-L-CE1/VVCSoftware_VTM) on the left side menu bar hover over "Repository" and select "Branches" from the pop-up menu
|
|
|
* In the upper right corner select "New Branch"
|
|
|
* Name the branch appropriately (e.g. CE1.1)
|
|
|
* Repeat branch creation as necessary
|
|
|
|
|
|
Adding users:
|
|
|
* On the CE project page hover over "Settings" on the left side menu and select "Members"
|
|
|
* Select the user to be added (typing parts of the user name works as search)
|
|
|
* Select "Reporter" for read access or "Developer" for write access
|
|
|
* Repeat adding users as necessary
|
|
|
|
|
|
CE read access for JVET members
|
|
|
-------------------------------
|
|
|
|
|
|
Accounts with read access were created for MPEG and VCEG members. For MPEG use the usual MPEG credentials. VCEG account information can be found in the [TIES system](https://www.itu.int/ifa/t/2017/sg16/exchange/wp3/q06/vceg_account.txt)
|
|
|
|
|
|
|
|
|
Workflow for CE members (writing)
|
|
|
---------------------------------
|
|
|
|
|
|
**Note:** CE development does not require an internal account. So you may skip the step for requesting account conversion in the registration instructions. An internal account is still helpful for providing patches and improvements for the main repository of VTM.
|
|
|
|
|
|
If you don't have a GitLab account, register at https://vcgit.hhi.fraunhofer.de
|
|
|
For more details on registration see the [VVC software development workflow](VVC-Software-Development-Workflow)
|
|
|
|
|
|
The following steps require git to be installed and accessible from the command line.
|
|
|
|
|
|
If you did not use git before, set up your work environment using the **git config** tool using your name and email address:
|
|
|
|
|
|
```bash
|
|
|
git config --global user.name "John Doe"
|
|
|
git config --global user.email johndoe@example.com
|
|
|
```
|
|
|
|
|
|
Also enable proper automatic handling of line endings:
|
|
|
|
|
|
```bash
|
|
|
git config --global core.autocrlf input
|
|
|
```
|
|
|
|
|
|
For more details see https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup
|
|
|
|
|
|
To clone the CE repository, type
|
|
|
|
|
|
```bash
|
|
|
git clone <url> [target_path]
|
|
|
```
|
|
|
|
|
|
with the ```<url>``` of the repository that can be found in the web page of your CE repository. It can be found on the project page of the CE:
|
|
|
|
|
|

|
|
|
|
|
|
```target_path``` is an optional parameter. If you are working on multiple CEs, it may be helpful to clone different CEs into different directories named after the CE, e.g. *VVCSoftware_VTM_CE1*
|
|
|
|
|
|
**Note:** The CE repository should have something like "JVET-?-CE?" in it's URL. Make sure to clone the correct CE.
|
|
|
|
|
|
Change into the cloned copy of the repository and create a branch for checking in software, e.g.:
|
|
|
|
|
|
```bash
|
|
|
cd VVCSoftware_VTM
|
|
|
```
|
|
|
|
|
|
To list available branches type
|
|
|
|
|
|
```bash
|
|
|
git branch --remote
|
|
|
```
|
|
|
|
|
|
To switch into the appropriate branch type
|
|
|
|
|
|
```bash
|
|
|
git checkout CE1.1
|
|
|
```
|
|
|
|
|
|
assuming the branch is named CE1.1
|
|
|
|
|
|
Make the required modifications. New files have to be added using the command:
|
|
|
|
|
|
```bash
|
|
|
git add <file(s)>
|
|
|
```
|
|
|
|
|
|
It is good practice to run ```git diff``` before adding the files, such as to check
|
|
|
what changes are actually being added. If listed changes are not the ones you made,
|
|
|
then you shouldn't proceed.
|
|
|
|
|
|
Optionally (for advanced users), automated formatting can then be applied
|
|
|
using the command:
|
|
|
```bash
|
|
|
git clang-format
|
|
|
```
|
|
|
Note that this requires clang-format to be installed on your system. A list of
|
|
|
modified files (if any) is printed. If files are modified, please check the
|
|
|
changes with git diff. If the changes go beyond what you expected
|
|
|
(for example parts that you didn't edit got reformatted), you should revert individual
|
|
|
files with ```git checkout -- <file>```. If the changes look great, stage them with
|
|
|
git add.
|
|
|
|
|
|
Commit all changes to the local repository with:
|
|
|
|
|
|
```bash
|
|
|
git commit -a
|
|
|
```
|
|
|
Make sure to write a proper comment.
|
|
|
|
|
|
If you need to add changes, these can be committed using the `--amend` flag to add them to the previous commit. `--amend` should only be used, if the previous change was not pushed to the remote repository yet.
|
|
|
|
|
|
Push to the remote repository:
|
|
|
|
|
|
```bash
|
|
|
git push
|
|
|
``` |