Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What version control software has foolproof refactoring tracking?

13 views
Skip to first unread message

wilkinso...@gmail.com

unread,
Jun 6, 2007, 7:03:13 AM6/6/07
to
I like to refactor my code, changing names and moving classes.
Unfortunately my subversion eclipse plug-in cant keep up, and its
causing me pain! (Eclipse 3.2.2, Subversion, Subeclipse, Window 2000,
Java development)

I was wondering if theres any x platform, open source version control
system out there that doesnt rely on a hidden directory (e.g .svn) to
track changes made in the workspace, before commiting to a
repository.

It occurred to me that if the version control system put a guid
(http://en.wikipedia.org/wiki/Globally_Unique_Identifier) actually in
the file in perhaps an Alternate Data Stream with windows NTFS (http://
en.wikipedia.org/wiki/NTFS) or a fork (http://en.wikipedia.org/wiki/
Fork_%28filesystem%29) in other file systems, then you wouldn't have
to do any tracking in the IDE at all (so it would never fail).
Scanning the working directories at check-in time for the guids would
provide enough information about files being renamed or moved, as the
guid would remain intact from normal editing and renaming. New files
could also be detected by the absence of guid.

Some people might not like metadata like this being added to their
files but its only in the workspace version, it needed be in the
repository, it could easily be stripped out if it was a deployable
resource.

Anyway if I was writing a version control system I think thats how Id
handle that aspect of it, (the rest would be like GIT (http://
en.wikipedia.org/wiki/Git_%28software%29) - but not just for linux),
is there anything out there that comes close to this?

Cheers,
Philip Wilkinson.

Jorgen Grahn

unread,
Jun 6, 2007, 9:53:50 AM6/6/07
to
On Wed, 06 Jun 2007 04:03:13 -0700, wilkinso...@gmail.com <wilkinso...@gmail.com> wrote:
> I like to refactor my code, changing names and moving classes.
> Unfortunately my subversion eclipse plug-in cant keep up, and its
> causing me pain!

You lost me right about here. /How/ can't it "keep up"?

> I was wondering if theres any x platform, open source version control
> system out there that doesnt rely on a hidden directory (e.g .svn) to
> track changes made in the workspace, before commiting to a
> repository.

So "keeping up" has to do with you renaming/moving files often (you
mentioned Java ...). What is the problem? Even if you had used CVS,
you can write a tiny shell script to make that operation a one-line
command and I expect any half-decent editor/IDE which claims to take
care of all your version control needs to make it equally simple.

And when you have this, you'll find that it's not enough. The hard
problems with heavy refactoring of code and version control are *not*
how to commit the changes. It's about how to understand those changes
on a logical level, so it's possible to track them, merge several
people's work and so on. I believe it was discussed here a few months
back (in the context "which tool can track that I split a file in
two?")

/Jorgen

--
// Jorgen Grahn <grahn@ Ph'nglui mglw'nafh Cthulhu
\X/ snipabacken.dyndns.org> R'lyeh wgah'nagl fhtagn!

wilkinso...@gmail.com

unread,
Jun 7, 2007, 11:08:47 AM6/7/07
to
On Jun 6, 2:53 pm, Jorgen Grahn <grahn+n...@snipabacken.dyndns.org>
wrote:

> On Wed, 06 Jun 2007 04:03:13 -0700, wilkinson.phi...@gmail.com <wilkinson.phi...@gmail.com> wrote:
> > I like to refactor my code, changing names and moving classes.
> > Unfortunately my subversion eclipse plug-in cant keep up, and its
> > causing me pain!
>
> You lost me right about here. /How/ can't it "keep up"?
>
> > I was wondering if theres any x platform, open source version control
> > system out there that doesnt rely on a hidden directory (e.g .svn) to
> > track changes made in the workspace, before commiting to a
> > repository.
>
> So "keeping up" has to do with you renaming/moving files often (you
> mentioned Java ...). What is the problem? Even if you had used CVS,
> you can write a tiny shell script to make that operation a one-line
> command and I expect any half-decent editor/IDE which claims to take
> care of all your version control needs to make it equally simple.

Trouble is it didn't make it simple, as it didn't work. Its a bug
somewhere. Fair enough.


>
> And when you have this, you'll find that it's not enough. The hard

> problems with heavyrefactoringof code and version control are *not*


> how to commit the changes. It's about how to understand those changes
> on a logical level, so it's possible to track them, merge several
> people's work and so on. I believe it was discussed here a few months
> back (in the context "which tool can track that I split a file in
> two?")
>
> /Jorgen

I'm really just asking about this one aspect of version control which
is about tracking changes in a users personal workspace.
Rather than you or your ide telling the vcs about changes to the
workspace with commands like svn add, svn move and svn rename, I
figure it could be done without those commands just by the vcs putting
metadata into an alternate stream in the files. As long as this was
supported on the workspace filesystem (e.g NTFS) then you could just
use normal file operations to move, rename and create your files. Not
having those commands in the vcs would mean less to go wrong, nothing
to forget to do, so a more robust vcs.

I was just wondering if any existing vcs - theres a lot of them about,
does something like this already.

Jorgen Grahn

unread,
Jun 7, 2007, 12:26:05 PM6/7/07
to
On Thu, 07 Jun 2007 08:08:47 -0700, wilkinso...@gmail.com <wilkinso...@gmail.com> wrote:
...

> I'm really just asking about this one aspect of version control which
> is about tracking changes in a users personal workspace.
> Rather than you or your ide telling the vcs about changes to the
> workspace with commands like svn add, svn move and svn rename, I
> figure it could be done without those commands just by the vcs putting
> metadata into an alternate stream in the files. As long as this was
> supported on the workspace filesystem (e.g NTFS) then you could just
> use normal file operations to move, rename and create your files. Not
> having those commands in the vcs would mean less to go wrong, nothing
> to forget to do, so a more robust vcs.
>
> I was just wondering if any existing vcs - theres a lot of them about,
> does something like this already.

Sorry, don't know. My *guess* is that most tools acknowledge that
they do not support refactoring all that well, so why make it easy to
rename files?

Also, your proposed solution is a bit tricky. The tool would have to
function even without that metadata or be tied to certain OSes. Also,
there are plenty of ways to rename files while losing the metadata,
even if the file system supports it. For example (Unix-like):

sed 's/foo/bar/g' foo.java > bar.java \
&& rm foo.java

/Jorgen

doar...@gmail.com

unread,
Jun 7, 2007, 4:43:20 PM6/7/07
to
On Jun 7, 9:26 am, Jorgen Grahn <grahn+n...@snipabacken.dyndns.org>
wrote:

Take a look at mercurial - cross platform, guids per file etc

~Matt

Nikolaus Schulz

unread,
Jun 8, 2007, 12:53:21 PM6/8/07
to
Jorgen Grahn <grahn...@snipabacken.dyndns.org> wrote:
> On Wed, 06 Jun 2007 04:03:13 -0700, wilkinso...@gmail.com <wilkinso...@gmail.com> wrote:
>> I like to refactor my code, changing names and moving classes.
>> Unfortunately my subversion eclipse plug-in cant keep up, and its
>> causing me pain!

Cool, I am currently having exactly the same problem, so I'll just jump
in here.

[snip]

> And when you have this, you'll find that it's not enough. The hard
> problems with heavy refactoring of code and version control are *not*
> how to commit the changes. It's about how to understand those changes
> on a logical level, so it's possible to track them, merge several
> people's work and so on.

Yes. Things get interesting when you move and modify blocks of data
(code, text), let it be complete files, a C function or a paragraph of
plain text. Which VCS preserves history over such operations? It seems
that git does provide this feature, see [1], and also the link to [2]
there. I regard this as a real killer feature. Is there any second VCS
which can compete with git in that regard? Currently I'm still stuck
with CVS, which has absolutely no intelligence here.

> I believe it was discussed here a few months
> back (in the context "which tool can track that I split a file in
> two?")

That discussion was about Clearcase, and didn't cover the whole problem.

Nikolaus

[1] http://marc.info/?l=git&m=114315795227271
[2] http://article.gmane.org/gmane.comp.version-control.git/217

sriniv...@gmail.com

unread,
Jun 8, 2007, 2:05:39 PM6/8/07
to
On Jun 8, 12:53 pm, Nikolaus Schulz <microsch...@web.de> wrote:
> Jorgen Grahn <grahn+n...@snipabacken.dyndns.org> wrote:

I found the following press article about SCM and refactoring through
a Google search and the following Refactoring Scenario on the Accurev
website. May prove useful.

http://www.accurev.com/agile-scenario.htm

DeLorme Standardizes on AccuRev Software Configuration Management for
Multiple Parallel Projects and Enhanced Collaboration
Increases Development Productivity and Brings Immediate Rewards from
Continuous Integration and Refactoring

Lexington, MA, April 3, 2007 - AccuRev Inc. today announced that
DeLorme, the innovation leader in mapping, GIS, and GPS technology,
has standardized on AccuRev® for process-centric software
configuration management (SCM). Directly responsible for many of the
major technological advances made in the mapping industry over the
past 30 years, DeLorme chose AccuRev to be at the center of its best-
of-breed application lifecycle management (ALM) strategy.

AccuRev was chosen as the benchmark to which all other leading SCM
tools were evaluated against, including Microsoft Team Foundation,
Perforce, Seapine and CollabNet Subversion. AccuRev was selected for
its ability to visually represent and dynamically model DeLorme's
development process, and manage multiple parallel releases in the most
efficient manner.

"Our previous development methodology was predicated on the
limitations of our SCM tool and put us in a box," says Christian
Ratliff, Software Architect, DeLorme. "AccuRev not only modernized our
development process, but enabled us to continually improve by
rethinking our development processes. We realized immediate advantages
with AccuRev by refactoring and adding continuous integration and its
visual interface opened up new lines of communication and
collaboration allowing us to do things that would be much harder or
impossible in other SCM systems."

AccuRev increased productivity by eliminating broken builds, and teams
that were unable to access the previous SCM repository for 24 hours at
a time while a new build was created are now able to work
continuously. AccuRev has also made test integration a very straight
forward undertaking, and increased overall development productivity.

About DeLorme
Located in Yarmouth, Maine, DeLorme has 30 years of cartographic and
software experience dedicated to creating the best in mapping, GIS,
and GPS products. DeLorme digital products are rooted in the DeLorme
XMap development platform, which is scalable for future growth and
endorsed by millions of dedicated digital mapping software users
worldwide. The DeLorme business model transforms innovative
technologies into affordable and easy-to-use navigation and mapping
products. For more information, visit www.xmap.com.

About AccuRev Inc.
AccuRev is the leading provider of process-centric software
configuration management (SCM) with a best-of-breed approach to
application lifecycle management (ALM). This approach enables
unlimited, adaptable, and compliant process models offering customers
maximum flexibility and control. The AccuRev interface, with
integrated issue-based workflow, advanced visualization, process
automation, and artifact traceability, improves collaboration,
visibility and management of multiple releases developed in parallel,
allowing geographically distributed and outsourced teams to remain
agile and competitive.

AccuRev supports open standards and SOA-based development tool
interoperability across Microsoft Windows, Linux, and UNIX platforms
and provides native support for the most commonly used software
development methodologies including Agile, iterative, and waterfall.
AccuRev is used by a growing number of global enterprises, including
American Airlines, Citibank, Polycom, Sony Computer Entertainment,
Raytheon Company and Lockheed Martin. AccuRev, Inc. is headquartered
in Lexington, Massachusetts and is privately held. More information
about AccuRev can be found at http://www.accurev.com, or by calling
1-800-383-8170 (US and Canada), and 1-781-861-8700 (Outside North
America).

Copyright © 2007 AccuRev, Inc. AccuRev is a registered trademark of
AccuRev, Inc. All other trademarks mentioned in this release are the
property of their respective owners.


Nikolaus Schulz

unread,
Jun 8, 2007, 3:11:03 PM6/8/07
to
sriniv...@gmail.com <sriniv...@gmail.com> wrote:
> On Jun 8, 12:53 pm, Nikolaus Schulz <microsch...@web.de> wrote:
>> Yes. Things get interesting when you move and modify blocks of data
>> (code, text), let it be complete files, a C function or a paragraph of
>> plain text. Which VCS preserves history over such operations? It seems
>> that git does provide this feature, see [1], and also the link to [2]
>> there. I regard this as a real killer feature. Is there any second VCS
>> which can compete with git in that regard? Currently I'm still stuck
>> with CVS, which has absolutely no intelligence here.

[snip]

>> [1]http://marc.info/?l=git&m=114315795227271
>> [2]http://article.gmane.org/gmane.comp.version-control.git/217
>
> I found the following press article about SCM and refactoring through
> a Google search and the following Refactoring Scenario on the Accurev
> website. May prove useful.
>
> http://www.accurev.com/agile-scenario.htm

Hm, thanks for the pointer. However, quickly glancing over all that
marketing speak on the site suggests that this is a huge overkill for my
purposes, and I certainly have a strong preference for a FOSS VCS.

Nikolaus

Zenin

unread,
Jun 8, 2007, 3:23:08 PM6/8/07
to
wilkinso...@gmail.com wrote:
>snip<

> I'm really just asking about this one aspect of version control which is
> about tracking changes in a users personal workspace. Rather than you or
> your ide telling the vcs about changes to the workspace with commands like
> svn add, svn move and svn rename, I figure it could be done without those
> commands just by the vcs putting metadata into an alternate stream in the
> files. As long as this was supported on the workspace filesystem (e.g
> NTFS) then you could just use normal file operations to move, rename and
> create your files. Not having those commands in the vcs would mean less to
> go wrong, nothing to forget to do, so a more robust vcs.

Less robust vcs. There's a ton of daily situations where you wouldn't
want files automatically added to vcs (temp files, logs, derived objects
like .o files, just trying out ideas, etc).

I do believe the vcs should stay as much out of the way as possible, but
there's a reason why pretty much every single vcs does not automatically
start adding and commiting every change it finds just because. There's
a *HUGE* sanity gain by requiring that the dev actually state that yes,
they do want to add, move, modify, whatever a file. We've started
enforcing that any commit must include a issue/enhancement # and it's
*really* cleaned up our process and sped up everything (development,
testing, debugging production issues, etc).

You could easily add hooks to your editor and aliases to your shell to
make all of it act like it was 'built into the filesystem'. (alias mv,
cp, rm, and hook the save command of your editor). It shouldn't take a
professional developer more then 20 mins to setup in any env and vcs.

But it would be hugely, hugely stupid. I'd likely disable the account
of any dev that did something like that (and if I had my way, fire
them). Dumb ideas bring down entire departments.

> I was just wondering if any existing vcs - theres a lot of them about,
> does something like this already.

Probably. If there's a bad idea for a software tool, someone's probably
already built it and would be happy to sell you a site license.

--
-Zenin - "It don't mean a thing if it ain't got that swing!"
http://zenin4711.livejournal.com/
http://www.myspace.com/zenin4711

Bruce Stephens

unread,
Jun 8, 2007, 3:30:09 PM6/8/07
to
wilkinso...@gmail.com writes:

> I like to refactor my code, changing names and moving classes.
> Unfortunately my subversion eclipse plug-in cant keep up, and its
> causing me pain! (Eclipse 3.2.2, Subversion, Subeclipse, Window 2000,
> Java development)

Sounds like a problem with the eclipse plugin.

[...]

> It occurred to me that if the version control system put a guid
> (http://en.wikipedia.org/wiki/Globally_Unique_Identifier) actually in
> the file in perhaps an Alternate Data Stream with windows NTFS (http://
> en.wikipedia.org/wiki/NTFS) or a fork (http://en.wikipedia.org/wiki/
> Fork_%28filesystem%29) in other file systems, then you wouldn't have
> to do any tracking in the IDE at all (so it would never fail).
> Scanning the working directories at check-in time for the guids would
> provide enough information about files being renamed or moved, as the
> guid would remain intact from normal editing and renaming. New files
> could also be detected by the absence of guid.

But then you'd be screwed on file systems which had no such thing.
Also, probably, archive things like zip, tar, etc.

And you'd need to make sure that all the editors and tools you want to
use do the right thing and don't accidentally lose the labels. (For
example, if your editor does "cp orig_file tmp_file; <mangle tmp_file>;
mv tmp_file orig_file", then probably orig_file now has a new GUID.)

[...]

> Anyway if I was writing a version control system I think thats how Id
> handle that aspect of it, (the rest would be like GIT (http://
> en.wikipedia.org/wiki/Git_%28software%29) - but not just for linux),
> is there anything out there that comes close to this?

I guess GNU Arch may be the closest. The idea is to embed the tag as
normal text in the file. For source code you stick it in a header.
That kind of thing can survive badly behaved editors, being stuck in
zip files, etc. (I'm not trying to recommend GNU Arch, but it's
probably close to what you suggest.)

Henry Townsend

unread,
Jun 9, 2007, 7:23:38 PM6/9/07
to
wilkinso...@gmail.com wrote:
> I'm really just asking about this one aspect of version control which
> is about tracking changes in a users personal workspace.
> Rather than you or your ide telling the vcs about changes to the
> workspace with commands like svn add, svn move and svn rename, I
> figure it could be done without those commands just by the vcs putting
> metadata into an alternate stream in the files. As long as this was
> supported on the workspace filesystem (e.g NTFS) then you could just
> use normal file operations to move, rename and create your files. Not
> having those commands in the vcs would mean less to go wrong, nothing
> to forget to do, so a more robust vcs.
>
> I was just wondering if any existing vcs - theres a lot of them about,
> does something like this already.

There is http://www.clearguide.com/ccfd/ for ClearCase, but it's limited
to Unix. And ClearCase is anything but FOSS. For the record, anyway.

HT

pablosan...@gmail.com

unread,
Jun 10, 2007, 4:27:42 AM6/10/07
to
Hi,

Take a look at Plastic SCM. It is free for open source projects. If
you need a commercial license you have one supporting full-refactor
for only $180.

<a href="http://www.codicesoftware.com/opproducts2/
opdirectory.aspx>http://www.codicesoftware.com/opproducts2/
opdirectory.aspx</a>

Also watch this:

<a href="http://codicesoftware.blogspot.com/2007/06/merge-
this.html">http://codicesoftware.blogspot.com/2007/06/merge-this.html</
a>


On Jun 10, 1:23 am, Henry Townsend <henry.towns...@not.here> wrote:


> wilkinson.phi...@gmail.com wrote:
> > I'm really just asking about this one aspect of version control which
> > is about tracking changes in a users personal workspace.
> > Rather than you or your ide telling the vcs about changes to the
> > workspace with commands like svn add, svn move and svn rename, I
> > figure it could be done without those commands just by the vcs putting
> > metadata into an alternate stream in the files. As long as this was
> > supported on the workspace filesystem (e.g NTFS) then you could just
> > use normal file operations to move, rename and create your files. Not
> > having those commands in the vcs would mean less to go wrong, nothing
> > to forget to do, so a more robust vcs.
>
> > I was just wondering if any existing vcs - theres a lot of them about,
> > does something like this already.
>

> There ishttp://www.clearguide.com/ccfd/for ClearCase, but it's limited

Nikolaus Schulz

unread,
Jun 10, 2007, 9:59:06 AM6/10/07
to
pablosan...@gmail.com <pablosan...@gmail.com> wrote:
> Take a look at Plastic SCM. It is free for open source projects. If
> you need a commercial license you have one supporting full-refactor
> for only $180.
>
> <a href="http://www.codicesoftware.com/opproducts2/
> opdirectory.aspx>http://www.codicesoftware.com/opproducts2/
> opdirectory.aspx</a>

Thanks for this pointer. That site is much more pleasant than
Accurev's. :-) Though, going back to the latter again, I realize that
I'm probably just too much used to plain text developer mailing lists,
so I find the fancy site design and marketing speak quite deterring...
But still, I'm a FOSS guy, so I'll probably stick to a FOSS RCS.

Nikolaus

pablosan...@gmail.com

unread,
Jun 10, 2007, 11:02:40 AM6/10/07
to
Hi again,

Well, I think Perforce (www.perforce.com) is free for 2 users, and
most of the commercial ones are free if you do open source projects.

On Jun 10, 3:59 pm, Nikolaus Schulz <microsch...@web.de> wrote:

Nikolaus Schulz

unread,
Jun 10, 2007, 11:30:39 AM6/10/07
to
pablosan...@gmail.com <pablosan...@gmail.com> wrote:
> Well, I think Perforce (www.perforce.com) is free for 2 users, and
> most of the commercial ones are free if you do open source projects.

I'm not a dogmatic FOSS user. But FOSS gives you transpareny. You can
read the bug reports, you can read the project mailing list, see the
dev's there debating design and implementation issues. You can examine
how they approach problems, you can read their code. I am very, very
much used to being able to do so, and I sorely miss this with non-FOSS.

So, evaluating revision control systems, IMO software not being open
source comes with a serious handicap.

Nikolaus

0 new messages