mast-eu / GitExtensions.SVN

SVN plugin for Git Extensions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GE hangs when switching to an SVN repo with the SVN plugin installed

jrfnl opened this issue · comments

Current behaviour

  • Installed GitExtensions on a new machine
  • Copied my previous settings over - note: previous install has no extra plugins installed other than the ones which ship with GE by default
  • Installed the SVN plugin. The Plugin Manager closed GE for the install.
  • Reopened GE.
  • Went to Plugins -> SVN to be (correctly) greeted with
    image
  • Switched to a repo with SVN only for the application to hang indefinitely (Not Responding).
  • Hard closed the application.

After manually removing the Users\Name\AppData\Local\GitExtensions\UserPlugins\GitExtensions.SVN folder + removing the package from the Users\Name\AppData\Local\GitExtensions\UserPlugins\packages.config file, GE starts up again as normal to the repo I was switching to without any delay.

Expected behaviour

That the application doesn't hang.

Steps to reproduce

See above and I have been able to consistently reproduce it by installing the SVN plugin again as I forgot to take a screenshot the first time round ;-)

Did this work in previous version of GitExtensions

No idea as I never installed the extension before.

Environment

  • Git Extensions 3.4.3.9999
  • Build d4b0f48bbf3e39a71f5d7ff5231be5678d4aa0f1
  • Git 2.30.0.windows.2
  • Microsoft Windows NT 10.0.19042.0
  • .NET Framework 4.8.4300.0

Thanks for your report. I have a few questions:

Switched to a repo with SVN only

  1. What exactly do you mean with SVN only? Was the repo initialized with git svn clone?

  2. Is the SVN remote reachable at the moment when you switch to the repo in question? Or are you working disconnected?

  3. Probably off-topic, but still: Why did you go the manual way to remove the plug-in? Did the uninstallation from within the Plugin Manager not work?

What exactly do you mean with SVN only? Was the repo initialized with git svn clone?

Sorry, that sentence was missing a comma...

Switched to a repo with SVN**,** only for the application to hang indefinitely

And no, the repo was not initialized with git svn clone, but there is an .svn directory.

Is the SVN remote reachable at the moment when you switch to the repo in question? Or are you working disconnected?

100% yes.

Probably off-topic, but still: Why did you go the manual way to remove the plug-in? Did the uninstallation from within the Plugin Manager not work?

The application was hanging = not responding to anything anymore. In other words: there was no way to even open the Plugin Manager.

the repo was not initialized with git svn clone, but there is an .svn directory.

Sorry, but this plugin is not intended to replace a full SVN client. It's only a replacement for the basic SVN support that was integrated in Git Extensions 2.x, but dropped in Git Extensions 3.x.
Wouldn't a "real" SVN client be the better choice for your use case? I'm not very familiar with them, but many of my colleagues used TortoiseSVN.

I still don't understand how you managed to open a pure SVN repo in Git Extensions. When I try it on my machine, I just get this error
image

Sorry, but this plugin is not intended to replace a full SVN client. It's only a replacement for the basic SVN support that was integrated in Git Extensions 2.x, but dropped in Git Extensions 3.x.

I understand. I only installed the plugin to see what additional functionality it offered, but unfortunately, I never did get to see that now.

Wouldn't a "real" SVN client be the better choice for your use case? I'm not very familiar with them, but many of my colleagues used TortoiseSVN.

I have one of those too, but to be honest, I detest SVN after having gotten used to git, so avoid it as the plague.

I still don't understand how you managed to open a pure SVN repo in Git Extensions. When I try it on my machine, I just get this error

Ah, sorry, I clearly didn't explain it well enough. The repo is both Git as well as SVN. Commits have to go through SVN, but there is an official git mirror, including git repo which allows for reviews via pull requests, even though those will never be git merged.
So in the setup I have, the repo directory has both a .git as well as a .svn directory.

As my workflow is fully git oriented, whenever a SVN patch is needed, I generate it using "Format patch" in GE and whenever I need to test an SVN patch which doesn't have an open PR, I use the "Apply patch" functionality.

The repo is both Git as well as SVN. Commits have to go through SVN, but there is an official git mirror

Ahh, now I understand. Thanks for the clarification: You're in a hybrid SVN + git environment. Yeah, those are fun 😏
I had to deal with one during a few years long "transition period" from SVN towards git. SVN was the official repo, where you pulled from and pushed to. Git was a mirror, which everybody was free to use at will: merge, rebase, squash as you like, but in the end you must commit to SVN first and git second.

That was the time when GE 3 came out and dropped SVN support. This plugin was created to support my everyday work with GE. The basic flow was:

  • init repo with git svn clone and add the git mirror repo as a second remote. At this point, since you'll have only a .git directory and no .svn you cannot use a SVN client anymore.
  • git svn fetch + git push mirror master to pull everything from SVN and update the git mirror
  • working on exclusively on git mirror (feature branch, rebase, squash, merge)
  • git svn dcommit + git push mirror master when you're done

But let's get back from memory lane to the bug report: I'll keep it open because although the plugin is not intended for .svn repos, it should nonetheless obviously not hang the main app.

let's get back from memory lane

I wish this was memory lane for me.... 😂 Unfortunately WordPress is still on SVN and will be for the foreseeable future..

I'll keep it open because although the plugin is not intended for .svn repos, it should nonetheless obviously not hang the main app.

Thanks, that was the idea ;-)