The current version of RSQKit is a work in progress. Any content should not be considered final at this stage.
Skip to content Skip to footer

Your tasks: Version control

How do I choose the right version control system for my research project?

Description

Selecting an appropriate version control system (VCS) is crucial for managing research software effectively. This decision impacts collaboration, data management, and long-term project sustainability.

Considerations

  • Project size and complexity
  • Team size and geographical distribution
  • Types of files (code, data, documents)
  • Required integrations with other research tools
  • Team’s technical expertise
  • Long-term goals and potential for open-source contribution
  • Handling of large binary files common in research
  • Compliance with institutional policies and grant requirements

Solutions

  • For most research projects, choose Git:
    • Widely used in both academia and industry
    • Excellent for collaborative work and open-source projects
    • Large ecosystem of tools and hosting platforms (GitHub, GitLab)
  • For projects with large binary files, consider:
  • For teams new to version control:
    • Start with Git, but provide thorough training
    • Consider Mercurial as an alternative if Git proves too complex
  • For projects requiring strict access control - Subversion (SVN) might be suitable, though less modern

How do I implement version control in my research workflow?

Description

Implementing version control in a research context involves more than just choosing a system. It requires establishing workflows, educating team members, and integrating with existing research practices.

Considerations

  • Current data management practices
  • Reproducibility requirements of your research
  • Collaboration patterns within your team and with external partners
  • Integration with data analysis pipelines and tools
  • Publication and open science practices
  • Long-term archiving of research outputs

Solutions

  • Establish a clear workflow:
    • Define a branching strategy (e.g., Git Flow for larger projects)
    • Set guidelines for commit messages and code reviews
  • Integrate with your development environment:
    • Set up your Integrated Development Environment (IDE), such as Visual Studio Code, RStudio, PyCharm or Eclipse, or a text editor to work with your VCS
    • Implement continuous integration for automated testing
  • Educate your team:
    • Provide training on basic VCS concepts and commands
    • Create documentation for your specific workflow
  • Ensure reproducibility:
    • Use tags to mark versions used in publications
    • Include configuration files and dependencies in version control
  • Facilitate collaboration:
    • Use a platform like GitHub or GitLab for easy sharing and collaboration
    • Implement code review practices to maintain quality
  • Maintain your repository:
    • Regularly backup your repository
    • Periodically clean up old branches and review access permissions
Skip tool table

Tools and resources on this page

Tool or resource Description Related pages Registry
Eclipse Free and open-source Integrated Development Environment (IDE) used for Java development, with support for developing applications in other programming languages too Writing readable code Software documentation
Git Distributed version control system designed to handle everything from small to very large projects with speed and efficiency
Git Large File Storage An open source Git extension for versioning large files, such as audio samples, videos, datasets, and graphics
GitHub Software development, sharing and version control platform Writing a CodeMeta file Creating a 'Read the D... Releasing code Software documentation Digital Software Ident...
GitLab DevOps platform that enables teams to collaborate, plan, develop, test, and deploy software using an integrated toolset for version control, CI/CD, and project management. Creating a 'Read the D... Releasing code Software documentation
Mercurial Distributed source control management tool - it efficiently handles projects of any size and offers an easy and intuitive interface
Perforce Highly scalable development and DevOps solutions designed to deliver dynamic development, intelligent testing and risk management environment
PyCharm Free Python Integrated Development Environment (IDE) for application, data science and web development Writing readable code Software documentation
RStudio Integrated Development Environment (IDE) for R, a programming language for statistical computing and graphics Writing readable code
Subversion Version control system
Visual Studio Code An Integrated Development Environment (IDE) (commonly referred to as VS Code) developed by Microsoft Writing readable code Software documentation
Skip national tools table

National resources

Tools and resources tailored to users in different countries.

Tool or resource Description Related pages Registry
Contributors

How to cite this page

Giacomo Peru, "Version control". http://everse.software. http://everse.software/RSQKit/version_control (accessed 08 January, 2025).