Related Documentation:
Backup Repository
For the federated development of the software components of GENESIS, a software buildbot machine houses a monotone server that is connectible over the internet. Source code changes can be properly merged using the functions available on monotone, regardless of the location where the changes have been made (at home, in your office, on the airplane). The build mechanism will always build the most up to date version of the code.
The easiest way to get the latest version of the source code is via the DeveloperPackage.
It is also possible to manually perform operations that are automated by the DeveloperPackage.
If you want someone else to sync their code with what you have on your laptop, you can conveniently convert your laptop to a source code server using the command neurospaces_serve (see the DeveloperPackage). Other people can now connect to your laptop using, for example
neurospaces_sync --repo-sync <ip-address-of-your-laptop>
|
or
neurospaces_pull --repo-pull <ip-address-of-your-laptop>
|
All these commands accept a “--regex <package-regex>” option to select packages to serve, sync and pull respectively. To interrupt the server and kill all the server processes, use “neurospaces_kill_servers”.
To check out the latest version of the GENESIS code you must first initialize a local monotone repository via this command:
mtn --db=myrepo.mtn db init
|
There are monotone instances running for different parts of GENESIS on different ports. To target the correct component of our GENESIS system you need to use the following arguments for the remote server. The server address and port number are accessed by, for example, for the backward compatibility layer
repo-genesis3.cbi.utsa.edu:4692
|
Description | Package name | Port # | Repository Name |
GENESIS backward compatability layer | ns-sli | 4692 | ns-sli.mtn |
Internal Storage for Models | model-container | 4693 | model-container.mtn |
Single neuron solver | heccer | 4694 | heccer.mtn |
Scheduler | ssp | 4695 | ssp.mtn |
Development Package | developer | 4696 | neurospaces-developer.mtn |
Project Browser | project-browser | 4697 | neurospacesweb.mtn |
Incomplete GUI | studio | 4698 | studio.mtn |
GShell | gshell | 4699 | gshell.mtn |
User documentation | userdocs | 4700 | userdocs.mtn |
Exchange | exchange | 4701 | exchange.mtn |
Publications | publications | 4702 | publications.mtn |
Experimental Protocols and I/O | experiment | 4703 | experiment.mtn |
RTXI protocol software package | rtxi | 4704 | rtxi.mtn |
Python Scheduler | sspy | 4705 | sspy.mtn |
Chemesis-3 | chemesis3 | 4706 | chemesis3.mtn |
Code can be pulled from the monotone server into your local working repository with the command
mtn --db=myrepo.mtn pull repo-genesis3.cbi.utsa.edu:<port#> ‘‘*’’
|
The “*” argument pulls all branches from the server into your local repository. To pull a specific branch see the following section. It’s important that each server be synchronized with it’s own local repository. Once the code has been pulled you can checkout one of the branches into your working directory with the command
mtn --db=myrepo.mtn --branch=<Branch ID> co source_directory
|
To synchronize your monotone repository to the remote server you’ll need to use the sync command with the proper address of the server (as listed in the above table).
mtn --db=myrepo.mtn sync repo-genesis3.cbi.utsa.edu:<port#> "*"
|
Now all changes, including logs will be on both the client and server repositories. Note in order to perform this operation you need to be given write access to the repositories on the GENESIS server repository repo-genesis3.
You must know the desired branch when pulling a repository. All branches can be downloaded simultaneously via the “*” argument. We currently use numeric branches that start at zero (0). After pulling a repository you can generate a list of branches available for check out from your local repository via the command
mtn --db=myrepo.mtn list branches
|
A monotone repository is an annotated database and every change that is made is signed with keys. To be able to commit changes to your local monotone repository you need to generate a key pair. To do this execute the command
mtn genkey email@address.com
|
This stores a your private key in ~/.monotone. To enable this, you will be asked to enter a password which is used to verify your identity when you check in changes. To see all the keys monotone has stored you can do a
mtn list keys
|
and also an
mtn --db=myrepo.mtn list keys
|
To commit the changes you have made to your own database repository, cd to the appropriate source directory and execute either
mtn ci
|
or
mtn commit
|
To get write access to a repository which you did not initiate, it must be signed with your public key. To export your public key perform the following command
mtn --db=repo.mtn pubkey my@email.com > me.pubkey
|
Send the repository owner your public key for write access. To perform this you must have monotone read in the key from stdin with the read command
cat me.pubkey | mtn --db=repo.mtn read
|
If this is successful it will indicate that a packet has been read. You can store several keys in a file this way with the number of successful packets read in being given.