Settings

Theme

Ask HN: "Smart" VCS with a built-in interpreter?

2 points by mofey 15 years ago · 4 comments · 1 min read


Has there ever been developed a VCS that tracks changes on a semantic level? For example, if you change a variable name, then a "smart VCS" doesn't treat it as character updates, but rather as refactoring of a field.

nostrademons 15 years ago

I've heard that Darcs had a plugin that did this, but it was hella slow (like much of the rest of Darcs).

It's generally a very hard problem to go from a series of character updates back to a semantic update. A lot of people say "Well, just parse the source code before check-in, diff the parse trees, and store the parsed representation." The problem is that a lot of information is discarded when you go from flat text to parse trees. Comments, whitespace, linebreaks, code-formatting, etc. What happens if you rename a variable, this makes the line grow longer than 80 characters, and that forces you to add a linebreak and reindent the lines following it? That's trivial for a human to do, fairly hard for an automated refactoring tool (trust me on this ;-)), and nearly impossible to reverse in a manner that preserves the original formatting intent.

  • mofeyOP 15 years ago

    I use indentation provided by IntelliJ and it has always helped me indent my code.

burgerbrain 15 years ago

What sort of enhanced user experience do you see this providing? Automated change summaries?

  • mofeyOP 15 years ago

    - More meaningful information about a particular commit.

    - Robustness of versioning. Certain types of errors will become extinct. For example, refactoring will update a variable in all 10 places instead of 9/10.

    - VCS can take on tasks of an integration server. The VCS now will be able to make sure that your project "compiles" before accepting a commit.

    The real motivation behind this would be to make branch management easier, since the VCS has now more information.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection