jakubgarfield / Bonobo-Git-Server

Bonobo Git Server for Windows is a web application you can install on your IIS and easily manage and connect to your git repositories. Go to homepage for release and more info.
http://bonobogitserver.com
MIT License
1.81k stars 603 forks source link

Several repositories listed as "missing" #735

Closed dankell closed 7 years ago

dankell commented 7 years ago

We have been using Bonobo for a couple of years now, with the Repository Directory set on a network share.

I've just gone to checkout a repository which I haven't used for a couple of months and on viewing the Repositories list there are a number of repositories that are marked as "(Missing)". Out of 31 repositories 12 are marked as "Missing".

If I click on a repository the error "An error occurred when processing your request. Please try again or contact the system administrator." is displayed.

Looking on the Network server the folder associated with the Missing Repositories are where I would expect them to be. But beyond that I'm not sure what to expect.

The repository that I want to use should have been updated at the end of July based on the edit dates of the last local file edits (we keep a separate copy of the "latest" files)

I've updated from 6.2.1 to 6.3.0 and that has made no improvement...

willdean commented 7 years ago

Are you sure there hasn't been any permissions change anywhere (the user which the app-pool running Bonobo runs as must be able to see the network share), or was the share perhaps not available when the Bonobo server started?

If you do an iisreset on the Bonobo server do they come back?

dankell commented 7 years ago

Not aware of any changes on the Network Share having changed. If there have been any changes of that type they should have affected all folders equally (all 31 repositories are on the same Network Share)

iisreset doesn't seem to make any difference

In trying to track this down it seems that at some point Bonobo no longer accepts UNC paths or Network Shares as valid repo paths, but has continued working with the paths we set up 2+ years ago...

The following error is recorded if I try and access one of the "Missing" folders, which are navigable in Windows Explorer

2017-09-11 16:28:06.624 +01:00 [Error] Invalid repo path "\\servername\dev\Git\Delphi_Absences"
2017-09-11 16:28:06.626 +01:00 [Error] Exception caught in Global.asax1
System.ArgumentException: Repository is not valid.
Parameter name: repositoryPath
   at Bonobo.Git.Server.RepositoryBrowser..ctor(String repositoryPath)
   at Bonobo.Git.Server.Controllers.RepositoryController.Detail(Guid id)
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
holiiveira commented 7 years ago

The identity configured in the application pool must have access to the share that Bonobo is using:

iis

larshg commented 7 years ago

Which version was the last one working?

dankell commented 7 years ago

@holiiveira That might be the issue - The "AppData" folder is set to have Read/Write permissions to "MACHINENAME\IIS_IUSRS" as per https://bonobogitserver.com/install/.

Obviously the repository folder on the network server cannot have this permission as the IIS_ISRS user is a local, not domain, user.

Under the Application Pools on IIS Manager the ASP .NET v4.0 Pool is set to ApplicationPoolIdentity

Am I correct in assuming that I need to 1) Setup a Domain BONOBOUSR user with R/W permissions to the network share,, 2) Assign this to the ASP .NET v4.0. Pool in place of ApplicationPoolIdentity, and 3) Change the R/W permissions on /APPDATA to the same user?

Or is there a different setting to apply that USER to just the BONOBO IIS application?

dankell commented 7 years ago

Have managed to persuade Network Admin to setup an appropriate user with access just to the network folder with the Git Repositories and everything is now working. Still confused that only a subset of the repos, all in the same folder, were affected