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 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
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
Contact the CE coordinators to get write access assigned for your account.
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:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
Also enable proper automatic handling of line endings:
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
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.:
cd VVCSoftware_VTM
To list available branches type
git branch --remote
To switch into the appropriate branch type
git checkout CE1.1
assuming the branch is named CE1.1
Make the required modifications. New files have to be added using the command:
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:
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:
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:
git push