...
Section | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
- Operating System: what ever floats your boat.
- IDE: Eclipse commonly used and free
- Wiki / Issue Tracker / Code Browsing and Reviewing / Automated Builds: we have a Jira Studio subscription (Mike Kellen as admin)
- Code versioning: SubversionGit, hosted by Atlassian as part of our Jira Studio subscriptionon GitHub.
- Build System: Maven
- Build repository manager: see Sage's hosted Artifactory service see jFrog website for info (John Hill and Mike Kellen as admins)
...
MONqrDkXrjMnJciwRtLBAEGFOmnBGjNmbRRWECCaUafBQo
mi2Kehqg3mIlkHdhHlTejumx2KzaGJQIsBkyJf66uTXT7W
NPQQsvpRQnqmPnrRpQPSunQNrOQnnRqMNovXXwssmXtvsW
vSttxsuurRqopnmomUUnovrnuoummmmmUUnovrnuoummmm
mUUJXdbW2flkbqtlohpUUnmmmm
You can also use Jacoco for code coverage. For more information, see Jacoco Code Coverage.
Java
Libraries
At this point we don't have any strict licensing requirements, however to maintain flexibility we have to be careful about licenses for software we choose to incorporate into our system. The best licenses are open source licenses without copy-left provisions (e.g. Apache License) that give us maximal flexibility in what we later do with the code base. Some strong copy-left licenses (e.g. GPL) would impose licensing requirements on us (e.g. force us to use GPL ourselves) if we chose to redistribute the code base at a later date. For now, we should just be aware of the mix of licenses incorporated into our projects, and have a bias for open source, non-copy left licenses.
...
- R Installation
- Bioconductor
- Eclipse Plugin for R
- You'll also need to install some tools that R package builds depend upon:
- Windows
- Download and unpack https://s3.amazonaws.com/nicole.deflaux/RStuff/DocumentationAndToolsForBuildingRPackageOnWindows.zip
- Follow the instructions on the first three slides of
doc/buildingPackages110406.pdf
for how to install all the toolsR Tools - If you have Cygwin installed, do NOT install the Cygwin DLLs (the installer has more detailed instructions)
- Install MikTeX
- Mac OSX
- Install XCodeso that you have a C compiler
- Be sure to select installation option "UNIX Development Support"
- If you install from the "App Store" and are not presented with this option, the following is a work-around:
After installing Xcode, go to XCode>Preferences...
Go to Downloads > Command Line Tools > Install
Follow the prompts to register as an Apple Developer and download the tools.
- Install MacTex
- Install XCodeso that you have a C compiler
- Windows
...
- MySQL Windows installation instructions
- MySQL Workbench - GUI tool for interacting with the MySQL database
...
Git
For general SVN info see the SVN bookGit info see the Git page. Or maybe you're interested in our Git Workflow instead.
Moving files and directories
The eclipse plugin for svn generally does a decent job Git is pretty smart about moving files and directories. See also http://svnbook.red-bean.com/en/1.1/re18.html
Here is an example:
- You can see that there is a "deleted" file here but it was actually "svn moved" http://sagebionetworks.jira.com/source/browse/PLAY/trunk/src/test/java/com/symform/common
- Old filename http://sagebionetworks.jira.com/source/browse/PLAY/trunk/src/test/java/com/symform/common/TestHelpers.java#r9
- New filename http://sagebionetworks.jira.com/source/browse/PLAY/trunk/src/test/java/com/symform/common/Helpers.java#r41
- You can see that the full svn history is shown on each page.
svn gets really upset though when you do more complicated things like created a file, delete that file, then make a directory with the same name in the same location as the deleted file. (but that is a pretty odd thing to do anyway)
When in doubt, make a developer branch and try it there first.http://svnbook.red-bean.com/en/1.1/ch04s02.html#svn-ch-4-sect-2.1
Developer branches
Want to make a drastic change and run it by the team before merging it to trunk? Want to check in broken code? Make a branch and do it there.
Resources
- SVN branch documentation http://svnbook.red-bean.com/en/1.1/ch04s02.html#svn-ch-4-sect-2.1
- svnmerge.py Documentation http://www.orcaware.com/svn/wiki/Svnmerge.py
- Rationale http://kenkinder.com/subversion-merge-tracking-with-svnmerge/
- the
svn switch
command is handy to change the branch for your local checked out copy of code
How to Set Up Merge Tracking
- Download svnmerge.py
Make a branch directory for yourself (you'll only need to do this once)
Code Block svn mkdir https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux
Make a new branch from trunk
Code Block svn copy https://sagebionetworks.jira.com/svn/PLFM/trunk https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux/automatedIntegrationTesting
Have both trunk and your new branch on your local hard drive, this assumes you already have trunk checked out in directory ~/platform
Code Block cd ~/platform svn update trunk svn checkout https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux/automatedIntegrationTesting
Initialize merge tracking
Code Block cd trunk svnmerge.py init ../automatedIntegrationTesting svn commit -F svnmerge-commit-message.txt cd ../automatedIntegrationTesting svnmerge.py init ../trunk svn commit -F svnmerge-commit-message.txt
Alternative: Initialize merge tracking and switch to your new branch
Code Block |
---|
cd trunk
svnmerge.py init https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux/sts
svn commit -F svnmerge-commit-message.txt
svn switch https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux/sts
svnmerge.py init https://sagebionetworks.jira.com/svn/PLFM/trunk
svn commit -F svnmerge-commit-message.txt
|
How to merge
Merge from trunk to your branch
Best Practice: merge changes from trunk to your branch every morning Monday through Friday. This reduces the pain later when you want to merge from your branch to trunk.
- Ensure the branch is working and committed to SVN.
To see what changes and/or branches are available for importing, use this command from the branch distribution:
Code Block python svnmerge.py avail -l
- Windows Users: One of the results should be '/PLFM/trunk'.
- import the changes from trunk into the branch:
to merge all changes
Code Block python svnmerge.py merge -S /PLFM/trunk
to merge one or more particular changes
Code Block python svnmerge.py merge -r #,#,# -S /PLFM/trunk
Resolve conflicts, compile, test and commit EVERYTHING in the branch.
Code Block svn ci -F svnmerge-commit-message.txt
Merge from your branch to trunk
...
Use the following command to find the revision(s) of interest:
Code Block |
---|
python svnmerge.py avail -S <your branch>
|
...
For all changes
Code Block python svnmerge.py merge -S <your branch>
For particular changes
Code Block python svnmerge.py merge -r <your revisions comma separated> -S <your branch>
...
It can even detect that you've renamed a file without you having to tell it so explicitly. Basically, you shouldn't have problems. If you do, write about the solution you found here.
Developer branches
Bottom line. They're easy in git, so USE THEM! For more info see the Git page for resources.
Tools To Know About
Pretty-Print JSON
...