Combining DVCS with version-stamped-assets : Is Largefiles the way to go? Or something else?

Warren Postma wpostma at ramsoft.com
Wed Dec 4 15:20:24 UTC 2013


Here is the workflow I would like to enable for a team:

1.  They would have a primary Mercurial repo that contains only source code and no binaries. (Conventional for most people, but a novelty for people conventionally used to using Subversion to store giant binary blobs)
2. When a build step produces a set of binaries, the build system (let's say it's a variant of the ANT tool from java) will gain an archive step that can store the binary set that is associated with a particular mercurial revision's node hash (hex), such as:

	MYPRODUCT_YYYY_MM_DD_REVECAA4B6DEAFG.zip

3.  I would like my build system to be able to up load to a NON MERCURIAL SERVER http server and then store into the hg repo working dir a text file containing just a URL, and a wget command, like this, to a file named "get_binaries":
           
            wget http://developers.ourcompany.com/binary_assets/yyyy/mm/dd/ MYPRODUCT_YYYY_MM_DD_REVECAA4B6DEAFG.zip

The only reason I'm posting the above is that I suspect that if people wanted to see Mercurial as a Hammer, and everything as a Nail,  then they might try the Largefiles extension for the above.  What I would like in Mercurial is probably somewhere between SubRepositories and LargeFiles, but I do not want to mix the MergeControl world (mercurial) and the Tagged File Archive (no versions, just version archives) tools.  

In the end, my goal is to replace a Subversion CVCS process that is using Subversion as a way to fetch 500 megs of source and 9.5 gigs of binaries, and substitute a DVCS branching workflow, without affecting the ability of people to get binaries when they want them. They would run the same ANT-like build-and-store or  fetch-already-stored commands that they know already, but Subversion would go away and be replaced by mercurial.

I am wondering if anyone has successfully deployed "Largefiles" and is happy with it, or if I should roll my own two-tier binary file retrieval shell-script type system involving an HTTP server. My worry is that by not having a clean separation between "Merge Controlled Files" (these are checked into Mercurial) and "Built and Automatically Stored, and Automatically Fetched" files (these are not even checked in as Largefiles, but rather stored only as shell script fetch-URLs.)

Is there some other tool that integrates with Mercurial and provides a clean separation from Sources Stored In Repo and Resulting Output Archival storage?
               
Warren Postma




More information about the Mercurial mailing list