Mercurial and Oracle Apps version control (lot's of DDL)

Joe Ferr jferr at Brocade.com
Tue Nov 16 10:15:21 CST 2010



-----Original Message-----
From: gerg.ward at gmail.com [mailto:gerg.ward at gmail.com] On Behalf Of Greg Ward
Sent: Tuesday, November 16, 2010 8:40 AM
To: Joe Ferr
Cc: mercurial at selenic.com
Subject: Re: Mercurial and Oracle Apps version control (lot's of DDL)

On Mon, Nov 15, 2010 at 11:19 PM, Joe Ferr <jferr at brocade.com> wrote:
> I think that using hg status --rev X:Y would work if there wasn't a better option.  I would need to parse the output of this command to figure out which files I'd need to copy/execute.

See Matt's response: you can use "hg status" to stitch together
everything you need.

> What I'm ideally looking for...it would be great if I could get this both from the command line and from hgweb...is a way to get all of these files in one command.  E.g. an export command which would let me pass two identifiers (tags or revs) and a directory name and mercurial would retrieve all files changed or added between these two tags/revs.

That's not the Mercurial way, because it's not the Unix way.
Mercurial and Unix provide all the tools you need to do this.  Put 'em
together in a little shell script and you're done.  Here's one
possible approach:

  # X is the changeset of the previous run
  # Y is the  new changeset containing new/changed scripts
  hg update Y
  files=`hg status -nma --rev X:Y`
  tmpdir=`mktemp -d`
  tar -cf - $files | (cd $tmpdir && tar -xf -)
  cd $tmpdir
  for script in $files;
      run $script
  done

That make a couple of assumptions:
  * no spaces in filenames or directory names
  * all modified files are valid database scripts -- you might need to
pass some filters to "hg status" to ensure that

Completely untested, of course.  YMMV.

Greg



Thanks Greg and Matt.  That's what I was looking for...appreciate the help and the quick response.



More information about the Mercurial mailing list