Remove source code of unused CVS support plugin.
ClosedPublic

Authored by flherne on Nov 22 2017, 3:07 PM.

Details

Reviewers
kfunk
kossebau
Group Reviewers
KDevelop
Summary

The plugin hasn't been ported to use K_PLUGIN_FACTORY_WITH_JSON, so it's never been loadable since KDevelop 5.0.

There are no bugs listed, and a web search doesn't turn up any complaints or feature requests, so apparently no-one at all has tried to use this feature despite it being listed quite prominently on the website.

Test Plan

Compiles, installs, kdevcvs.so is no longer built or installed.
CVS support continues to not exist.

Diff Detail

Repository
R32 KDevelop
Lint
Lint Skipped
Unit
Unit Tests Skipped
flherne created this revision.Nov 22 2017, 3:07 PM
Restricted Application added a subscriber: kdevelop-devel. · View Herald TranscriptNov 22 2017, 3:07 PM

Hm, there's a test, which surely ought to fail if the plugin isn't loaded, but doesn't appear in the CI's list of failing tests.

(trying locally).

+1 to remove.

While it's always sad to drop code which might have worked, with no-one seeming to use it by known feedback and no maintainers on kdevelop developer side, it is just a burden for any future development of kdevplatform APIs. Also is CVS a technology which has had its time long ago, so dropping support is not making kdevelop itself outdated.

The test isn't being built or executed at all currently.

kfunk added a subscriber: kfunk.Nov 22 2017, 3:43 PM

The test isn't being built or executed at all currently.

That's not true, though. From https://build.kde.org/view/KDevelop/job/KDevelop%20kdevelop%20kf5-qt5%20SUSEQt5.9/135/consoleFull:

...
15:25:15 103/114 Test #103: test_cvs ................................   Passed    5.34 sec
...

It is also being executed here locally, and also succeeds.

Hm, there's a test, which surely ought to fail if the plugin isn't loaded, but doesn't appear in the CI's list of failing tests.

(trying locally).

The test does not load the plugin binary, but compiles all source files into the test binary itself.

brauch added a subscriber: brauch.Nov 22 2017, 6:43 PM

Hmm, I'm not sure. The thing is, while it is of course an extremely niche feature in 2017, maybe we should look if it is easily fixable. Because *if* you are in the unfortunate situation that you have to interact with a CVS repo, I think you are all the happier if your IDE takes the pain of reading the CVS manual away from you ...

So, +1 for removing it if it is actually broken, but if all we need to do to have it working is port it to the new plugin loading architecture, I think that might be worth it.

I've tried that (and I believe @kfunk did also).

It only needs a very minor diff to be loadable:

-K_PLUGIN_FACTORY(KDevCvsFactory, registerPlugin<CvsPlugin>();)
+K_PLUGIN_FACTORY_WITH_JSON(KDevCvsFactory, "kdevcvs.json", registerPlugin<CvsPlugin>();)

It appears to do nothing unless ~/.cvspass exists and is non-empty.

When creating that, results of various operations (on the 'url' repo as linked here http://savannah.gnu.org/cvs/?group=url , just because it was the first one I found):

  • I haven't seen anything displayed in the 'CVS' toolview; it remains blank at all times.
  • 'CVS Commit' raises an error dialog, then segfaults when dismissing it.
  • The 'History' dialog segfaults when opened.
  • 'CVS Add' has no apparent effect (maybe I'm just not familiar enough with what it's meant to do).
  • 'CVS Revert' segfaults.

It may be that it's simply missed a couple of years of VCS API changes, and nothing's fundamentally broken. Even in that case, it would need someone vaguely familiar with CVS to test it properly.

kfunk requested changes to this revision.Nov 23 2017, 12:32 PM

Just so this isn't lost: I did some basic fixes to the CVS plugin the other day (5.2 branch) to at least get it working as all the other VCS plugins; I'm still interested to see whether a few more changes fully make it work. If it's too much work I'm also happy to just ditch the code for good.

Problems right now: E.g. "Showing Differences" on single files freezes the user interface; despite the Version Control viewing showing the correct CVS operations made.

Let's keep this Diff in limbo for a bit more time.

This revision now requires changes to proceed.Nov 23 2017, 12:32 PM
kossebau added a comment.EditedSep 28 2018, 11:43 AM
In D8950#171152, @kfunk wrote:

Let's keep this Diff in limbo for a bit more time.

@kfunk How much more time? :)

I would propose to discard it for now, for sanitizing the list of open review requests. If the topic comes up again, it can be reopened.

PS: Ideally we would have a policy to do a proper testing of all functionality part of KDevelop before releases and to discard anything not working=unmaintained, which I still assume the CVS plugin would suffer. But as long as we do not have such a policy, due to resources obviously, the code building makes it survive for now ;)

A year seems long enough. The code's in git if anyone wants it, there's no point advertising a feature that's unusable and not maintained.

https://commits.kde.org/kdevelop/0fc8dddfc8f603084af6c723473fedd300ae62ae

kossebau accepted this revision.Oct 28 2018, 1:16 PM
kfunk accepted this revision.Oct 28 2018, 5:53 PM
This revision is now accepted and ready to land.Oct 28 2018, 5:53 PM
kfunk closed this revision.Oct 28 2018, 5:53 PM