Difference between revisions of "GitSuperRepo"

From Einstein Toolkit Documentation
Jump to: navigation, search
 
(Documents)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
(draft)
+
[[Category:GitSuperRepo]]
  
* Software built from many different components living in their own repositories
+
The current method for checking out and updating components of the Einstein Toolkit has several shortcomings.  We propose an additional layer of management around a Cactus tree achieved by storing it in a Git repository.  This provides a uniform version control interface to the code with all the version control information from the source repositories available.  It also allows the entire Cactus tree to be treated as a single repository, and allows "versions" of the code to be identified by a single Git revision.
  
* End user must check out each component and compile them together into an executable which is then run to produce output
+
This project is still in the early stages.  We (Barry Wardell and Ian Hinder) are developing a set of techniques and tools which enable what we consider to be better workflows for using Cactus.  As we use these ourselves, we will learn about what works and what doesn't, and hopefully will be able to provide recommended workflows for end-users.
  
* End user is often also a developer of some of the components (public or private)
+
==Documents==
  
* GetComponents (URL) is a tool to simplify this process by collecting component repository information into a single "CRL" file (CRL = Component Retrieval Language).
+
* [[GitSuperRepoRationale|Rationale]]
 +
* [[GitSuperRepoUsersGuide|User's guide]]
 +
* [[GitSuperRepoAdminGuide|Server administrator's guide]]
 +
* [[GitSuperRepoUnsorted|Unsorted information]]
  
* GetComponents allows you to check out the latest versions from a CRL file, or to update an existing set of checkouts to the latest version
+
==Progress==
  
Problems:
+
* We have set up a repository which implements most of what is described in the [[GitSuperRepoRationale|Rationale]].
  
* Upstream projects use different version control systems (SVN, Git, Mercurial, ...) leading to a nonuniform experience for the end user/developer.  Multiple tools must be learned for merging/branching etc.
+
* Repository is updated from the source repositories every hour
  
* It is not easy to see at a glance exactly what version of the code is in use.  One could iterate over all the different repositories, of different types, and print the revision information, and any local differences.  This could be added to GetComponents, but we argue that this is the wrong solution to the problem.
+
==Planned work==
 +
 
 +
* Figure out some good scripts or git aliases for making working with the submodules more straightforward.
 +
 
 +
* Set up a public "einsteintoolkit" repository
 +
 
 +
* Integrate with build-and-test system so that there is always a branch which passes build-and-test
 +
 
 +
* Implement a technique for storing version control information (revision plus differences) into simulation output
 +
 
 +
* Update the group repository based on commit emails or an RSS feed rather than hourly

Latest revision as of 15:51, 27 June 2011


The current method for checking out and updating components of the Einstein Toolkit has several shortcomings. We propose an additional layer of management around a Cactus tree achieved by storing it in a Git repository. This provides a uniform version control interface to the code with all the version control information from the source repositories available. It also allows the entire Cactus tree to be treated as a single repository, and allows "versions" of the code to be identified by a single Git revision.

This project is still in the early stages. We (Barry Wardell and Ian Hinder) are developing a set of techniques and tools which enable what we consider to be better workflows for using Cactus. As we use these ourselves, we will learn about what works and what doesn't, and hopefully will be able to provide recommended workflows for end-users.

Documents

Progress

  • We have set up a repository which implements most of what is described in the Rationale.
  • Repository is updated from the source repositories every hour

Planned work

  • Figure out some good scripts or git aliases for making working with the submodules more straightforward.
  • Set up a public "einsteintoolkit" repository
  • Integrate with build-and-test system so that there is always a branch which passes build-and-test
  • Implement a technique for storing version control information (revision plus differences) into simulation output
  • Update the group repository based on commit emails or an RSS feed rather than hourly