-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Get MuseScore's source code
You must have Git installed on your computer (see Set up Developer Environment).
Before you download any source code, it's a good idea to create a folder called Projects
, code
or src
that you can use to store code projects on your machine.
Tips for creating the Projects folder (click to show/hide)
|
Linux and macOS
You could create the Projects folder inside your Home directory:
cd ~ # Change (go) to your home directory.
mkdir src # Create new directory for source projects.
Windows
Create the Projects folder at the root of an NTFS-formatted drive, such as your C:
drive:
# Change (go) to the C: drive's root directory:
cd C:\ # PowerShell or CMD
cd /c # Git Bash
# Create new directory for source projects:
mkdir src
Code projects often contain many layers of subdirectories, so it's best to keep them near the root of the drive to avoid encountering the 260 character MAX_PATH
limit Windows places on the length of file paths.
A 'fork' is a remote (online) copy of a repository. After a fork is made, it can be edited freely without affecting the original repository.
Tip: Only create a fork if you want to edit the code. If you just want to compile then you can skip creating the fork and move straight to Clone the repository.
To create a fork:
- Sign-in to GitHub (create a free account if necessary).
- Visit MuseScore's official repository page: https://github.com/musescore/MuseScore
- Click the "Fork" button in the top right to create your personal fork.
Your fork exists at https://github.com/USERNAME/MuseScore
where USERNAME
is your GitHub username (e.g. shoogle's fork is here).
A clone is a local (offline) copy of a repository. It's basically a folder on your computer that contains the code for you to edit and/or compile.
If you made a fork then you should clone it here, otherwise clone the official repository. Make the clone inside your Projects folder.
# Go to your source code Projects folder. For example:
cd ~/src # Linux and macOS
cd C:\src # Windows - PowerShell or CMD
cd /c/src # Windows - Git Bash
# Clone your fork if you have one:
git clone https://github.com/USERNAME/MuseScore # replace USERNAME with your GitHub username
# Otherwise clone the official repo:
git clone https://github.com/musescore/MuseScore
Tip: If you have a fork and you're on Linux or macOS, consider using its SSH URL git@github.com:USERNAME/MuseScore.git
instead of the HTTPS URL with the git clone
command. This requires additional setup, but it means that you don't have to enter your password every time you push code changes to GitHub. On Windows it's better to use the HTTPS URL if you want the password to be remembered.
The git clone
command put the code in a new folder called "MuseScore". You should change to it now:
cd MuseScore
This folder is used as the working directory for all subsequent commands, including on subsequent pages of this guide.
Git is able to push
(upload code to) and pull
(download code from) remote repositories, known as "remotes".
Run these commands to set the remotes for your local repository:
# If you cloned your fork earlier:
git remote add upstream https://github.com/musescore/MuseScore.git
git remote set-url upstream --push disabled # Prevent accidental push to official repo (team members only)
git pull upstream master # Get latest code from official repo.
git branch -u upstream/master # Track the official master branch instead of your fork's master branch
# If you cloned the official repo:
git remote set-url origin --push disabled # Prevent accidental push to official repo (team members only)
Explanation (click to show/hide)
Earlier, when you cloned the repository, a default remote called When The official repository should only ever be used with Tracking the upstream master branch means that |
Use this command to view names and URLs of all remote repositories that Git is aware of:
git remote -v
Hint: You can create additional remotes later on with git remote add [name] [url]
. This is useful if you ever need to fetch code from another person's fork.
Testing
- Manual testing
- Automatic testing
Translation
Compilation
- Set up developer environment
- Install Qt and Qt Creator
- Get MuseScore's source code
- Install dependencies
- Compile on the command line
- Compile in Qt Creator
Beyond compiling
Misc. development
Architecture general
- Architecture overview
- AppShell
- Modularity
- Interact workflow
- Channels and Notifications
- Settings and Configuration
- Error handling
- Launcher and Interactive
- Keyboard Navigation
Audio
Engraving
- Style settings
- Working with style files
- Style parameter changes for 4.0
- Style parameter changes for 4.1
- Style parameter changes for 4.2
- Style parameter changes for 4.3
- Style parameter changes for 4.4
Extensions
- Extensions overview
- Manifest
- Forms
- Macros
- Api
- Legacy plugin API
Google Summer of Code
References