[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: can I insert older versions of files? i.e. "here's backups of 3 months ago - put 'em in right revision order..."

From: Alan Jay Weiner <alan_at_ajw.com>
Date: 2004-07-19 02:15:55 CEST

>It's not possible to do what you want. The only thing you can do is
>what the rest of us have done:
>
>1. import a snapshot of an initial tree
>2. checkout a working copy
>3. unpack a new tree snapshot on top of the working copy
>4. adjust working copy as needed
>5. commit
>6. goto step 3
>
>Sorry. :-(

Thanks for the reply, Ben!

I tried doing that last night with one project; it wasn't as bad as I thought it
would be - only had a dozen or so backups for that project and rolled 'em all
into Subversion in less than an hour.
I've typed the detailed instructions below for anyone interested.

I do have some questions though... (well, lots, but I'll only ask a couple
here... :)

Am I correct in thinking that Subversion doesn't maintain a timestamp for each
file? That when checked out ("Switch" or "Update" commands) they will be set
to either the current time or the time of the last commit? (depending on the
setting of "use-commit-times")

(this, btw, is one thing I *don't* like about Subversion - I'd much rather the
file information stayed with the file... Although I can understand the
reasoning... I did try changing svn:date on revisions and that worked; I
couldn't do it on individual files though - am I right in thinking there isn't a
way to have different timestamps on files within a single revision?)

I could simulate this by committing each file individually; that would create
revisions for each file, and I could set the svn:date for each revision to the
date that I wanted that file to be. This would create a huge number of
revisions, but I'd get timestamps that would match my CDROM backups...

Is there a downside to doing this? Not sure if I will - realistically, I
almost never go back more than a few revisions and this sounds like more work
than I want to do... But conceptually, this'd work, right?

Essentially, sort all the files (within a backup) by date, commit them
individually, and then create a tag to mark that backup's point in time. Then
repeat for each backup in sequence...

I have more comments about changing svn:date, etc - I'll attach them to FRuG's
message as they're extensions to his comments...

Thanks again, Ben!

- Al -

(details of rolling my CDROM backups into Subversion...)

I'm using Windows 2000, Subversion is loaded on my notebook and running in a DOS
box (eventually I'll run it as a service using FireDaemon) and I'm using
TortoiseSVN as a GUI client.

I created the recommended "trunk", "tags", and "branches" directories in a
temporary directory:
        temp\projectname\branches
        temp\projectname\tags
        temp\projectname\trunk

I started with my oldest backup, copied it into temp\projectname\trunk, and then
"cleaned" it - removed all the intermediate files and anything I didn't want.

Then I right-clicked the temp directory and selected TortoiseSVN "Import" - that
imports everything within the temp directory. If you click on
temp\projectname, you'll just import branches, tags, and trunk... did that the
first time... :)

(hereafter, TortoiseSVN commands will be "TSVN <command>")

TSVN Branch/Tags and created a tag in projectname\tags.

Then simply copy the entire next backup on top of the temp\projectname\trunk -
this overwrites the initial import (into repository) files in your temp ("local
work") directory. No need to clean intermediate files again.

Right-click on temp\projectname\trunk and TSVN Commit. This brings up a dialog
("Enter Log Message") showing all the files. Be sure "Show unversioned files"
is selected so you'll see any newly-added files. (files added between last
backup and this backup). If there are any new files that should be added to
the repository, check the box next to them. Then click OK to commit those
changed files.

Then TSVN Branch/Tags again and create a new tag to identify that backup point.

Repeat for all your backups.

This works well for rolling everything into Subversion; you'll see new files
pretty easily, so you're unlikely to miss adding them to the repository.

It does *not* show deleted files as readily though. (those files deleted
between two backups). You'll have to check manually for that.

This ends up with a series of tags ("branches" in the tags directory) like this:
        projectname\tags\040110
        projectname\tags\040205
        projectname\tags\040207
        projectname\tags\040323
        projectname\tags\040325_beta_1
etc etc.
The name of the tag is of your choosing, of course - I've been in the habit of
marking things with yymmdd for a long time... (or yymmdd_hhmm if necessary)
I like how it sorts automatically into date order...

NOTE: in truth, you don't really need to make the tags - I did because I wanted
to be able to match my backup to a particular CDROM backup.
Each time you do the TSVN Commit, Subversion creates a revision - you can use
that revision as the "stable points" if you want. Making a tag allows you to
name it something more reasonable - like "Release Candidate 1" etc.

(end of sidebar...) -=-=-=-=-=-=-=-=-=-=-

-- 
--  Alan Weiner  --  alan_at_ajw.com  --  http://www.ajw.com
Palm OS Certified Developer
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Mon Jul 19 02:16:18 2004

This is an archived mail posted to the Subversion Users mailing list.