Hacker News new | past | comments | ask | show | jobs | submit login

> A better VCS isn't going to solve that!

It might!

I feel like a "language aware" VCS would be able to help a lot in this area.

I know there are 3rd party tools that can do this, but if a VCS came along that natively knew about some languages it could unlock some really cool features.

Imagine instead of your VCS storing the text source, it stores the AST! Language aware means it can also integrate tightly with language package managers.




That's not really a "better VCS" that's just a better 3-way merge. You can already plug your own 3-way merge into Git and other VCS.


Can you recommend any language aware 3-way merge tools?


Semantic Merge comes to mind, although it only does an AST merge on the structural level while blocks are still merged traditionally (I guess it's a good tradeoff of complexity, though). It has however proven to be rather slow with large merges (or large files; the source file I tried to merge had ~4 kLOC), in my recent test (was merging a major version of one product into derived ones, with lots of refactoring, so I thought SM could help).


but if a VCS came along that natively knew about some languages it could unlock some really cool features

Absolutely, although hopefully it'll be implemented using langserver or similar.

Conversely, I think programming languages (and code- and configuration-generators) of the future will be judged in part on how VCS-friendly they are. A few smart decisions when designing syntax could make diffs smaller and conflicts easier to resolve. (This kind of change would, I am convinced, also make experimental changes to code easier--think rewriting SQL queries to make them faster.)

For now, I've been adapting my own coding style over time to be more VCS friendly. It's made my life easier and has indeed made making experimental changes easier to boot.


This discussion won't see much more now that it's off the front page, but is there any work towards full undo support integrating with version control or even at the IDE level?

There's a lot of stuff that doesn't get checked in; I wouldn't necessarily want it all in the official history but it would be amazing to have a time-searchable view of the project's entire development story for my own personal review/rescue operations.



https://www.semanticmerge.com supports .NET languages, C/C++, and Java (with support for JavaScript planned). I would be interested to here any anecdotes from users of this product!

While struggling to search for this tool, I discovered https://www.gmaster.io: a beta Git client (for Windows) from the same company extending these ideas closer to the VCS level.

Codice Software's main product appears to be PlasticSCM; they've done a bit of marketing here on HN without catching much interest.


> I feel like a "language aware" VCS would be able to help a lot in this area.

VCS would have to be much more than "language aware" to even begin to help in this area.


Yes, one would need an AGI for that.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: