On Thu, Feb 12, 2004 at 08:48:13AM -0000, Russ Brown wrote:
Obviously, I want these changes to make their way back into my archive
at
home.
I think I need to mirror (copy?) my archive onto a removable storage
device (I was going to use a Compact flash card, but the details aren't
important). At the customer's site I install the software by checking it
out from the archive on the storage device. I make the changes I need,
and
then commit those changes to the archive on the storage device. When I
get
home I put the changes back into my main archive.
The thing to remember is that mirrors are _read-only_ (for good reason:
committing to a mirror could result in namespace conflicts with archive
it
was mirrored from).
I think the `arch way' to do what you want is (say your original archive
is
called address@hidden'):
(1) Mirror your archive on to the flash-card (or whatever).
(2) Create a _new_ archive on the flash-card which you'll use for
changes
made at the customer's site; of course if you make multiple trips,
you
can keep on using the same flash-card archive. Call this
address@hidden'.
(3) For each project you'll be wanting to modify, make a tag in the
identically named branch of the customer's archive
(address@hidden) which points to the latest version in
your
main archive; e.g., if you're going to work on
`secret-project--devo--0', do:
$ tla tag address@hidden/secret-project--devo--0--patch-89 \
address@hidden/secret-project--devo--0
(4) When you do a checkout at the customer's site:
A. Use `tla register-archive' to point address@hidden' at the
mirror
on the flash-card, and address@hidden' at the real
archive on the flash-card.
B. Checkout the project:
site$ tla get
address@hidden/secret-project--devo--0 xxx
C. Do your mods
D. Commit
E. etc
(5) When you get back, all your mods will be in the customer's archive
on the flash-card.
(6) In your comfy office, star-merge the customer's changes into main
archive; e.g.:
comfy$ cd /usr/local/src/secret
comfy$ tla tree-version # just for the info
address@hidden/secret-project--devo--0
comfy$ tla star-merge address@hidden/secret-project--devo--0
... lots of output ...
comfy$ tla commit -s'Merge customer changes'
(7) When you want to repeat the process, you can use the same
customer-archive, and omit steps (1) - (3); you'll also have to
make
sure to:
A. update the mirror of your main archive on to the flash card
B. merge in any changes that where made to your main version into
the customer's branch before working on it there (also using
star-merge), maybe after (B) in step (4) above:
site$ cd /usr/local/src
site$ tla get address@hidden/secret-project--devo--0 xxx
site$ cd xxx
site$ tla tree-version # just for the info
address@hidden/secret-project--devo--0
site$ tla star-merge address@hidden/secret-project--devo--0
... lots of output ...
site$ tla commit -s'Merge project changes into customer branch'
...etc...
I think all of this is covered pretty decently in the tutorial BTW.
It maybe look sort of complicated, but much of it is one-time overhead,
and
is pretty easy when you get used to this (I do this daily to share
between
work/home, and there's no direct channel between them, so I have to use a
3rd site to do the synchronization).
-Miles