Obtaining Code#

Full Code from GitHub#

The ChimeraX repository is hosted on GitHub. To get the full codebase:

# If you have SSH access
git clone git@github.com:RBVI/ChimeraX.git
# If not
git clone https://github.com/RBVI/ChimeraX.git

Alternatively, you can make a clone of the repo to your GitHub account and add the RBVI repo as an upstream repository.

# If you have SSH access
git remote add upstream git@github.com:RBVI/ChimeraX.git
# If not
git remote add upstream https://github.com/RBVI/ChimeraX.git

From there you can issue pull requests for the RBVI ChimeraX repository.

Code from the ChimeraX Distribution#

Most of ChimeraX is written in Python and that code is included in the ChimeraX distribution:

Windows: ChimeraX/bin/Lib/site-packages/chimerax
macOS: ChimeraX.app/Contents/lib/python3.x/site-packages/chimerax
Linux: chimerax/lib/python3.x/site-packages/chimerax

The ‘3.x’ in the latter two lines depends on the exact version of Python 3 being used by your version of ChimeraX, but is not less than 3.7. Typing, for example, chimerax/lib/python3.<TAB> should cause your shell to auto-complete the path for you.

Small modifications to the code can be tested by simply editing the Python code and restarting ChimeraX.

There is documentation for how to use a ChimeraX distribution to develop bundles elsewhere on this website.

Git Cheat Sheet#

Here are a minimal set of commands to get started using git:

  1. Git associates a user name and email address with all check-ins. The defaults are based on your USERNAME and your computer’s hostname. The email address is usually wrong. To explicitly set those values:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com
    
  2. Make local copy of repository:

    git clone https://github.com/RBVI/ChimeraX.git
    
  3. Use the develop branch (the master branch is only used for releases):

    git switch develop
    
  4. To update repository to latest version:

    git pull
    
  5. Add current state of file to the repository:

    git add "filename(s)"
    
  6. Commit all changes to repository (added files and changes to those added files):

    git commit -a
    
  7. Copy local repository changes to master repository:

    git push
    
  8. Diff from previous to current revision of file (ignores additions):

    git whatchanged -n 1 -p <file>
    
  9. Diff to previous commit of file:

    git diff HEAD^ <file>