unison icon indicating copy to clipboard operation
unison copied to clipboard

Reduce footguns around release branch cloning

Open pchiusano opened this issue 1 year ago • 2 comments

Currenly if you clone @someone/someproject/releases/0.1.0, then branch, do stuff, then attempt to push you get a cryptic error: https://discord.com/channels/862108724948500490/1219262772299431946/1219262957347930122

@runarorama/timers/upgradeBase> push

  Uploaded 1 entities.


  Oops, I received an unexpected status code from the server.
  
  Here is the request.
  
    Request
        { requestPath =
            ( BaseUrl
                { baseUrlScheme = Https
                , baseUrlHost = "api.unison-lang.org"
                , baseUrlPort = 443
                , baseUrlHost = "api.unison-lang.org"
                , baseUrlPort = 443
                , baseUrlPath = ""
                }
            , "/ucm/v1/projects/create-project-branch"
            )
        , requestQueryString = fromList []
        , requestBody = Just
            ( ()
            , application/json;charset=utf-8
            )
        , requestAccept = fromList
            [ application/json;charset=utf-8
            , application/json
            ]
        , requestHeaders = fromList []
        , requestHttpVersion = HTTP/1.1
        , requestMethod = "POST"
        }
  
  Here is the full response.
  
    Response
        { responseStatusCode = Status
            { statusCode = 400
            , statusMessage = "Invalid Parameter"
            }
        , responseHeaders = fromList
            [
                ( "Server"
                , "nginx/1.24.0"
                )
            ,
                ( "Date"
                , "Mon, 18 Mar 2024 12:34:17 GMT"
                )
            ,
                ( "Transfer-Encoding"
                , "chunked"
                )
            ,
                ( "Connection"
                , "keep-alive"
                )
            ,
                ( "X-RequestID"
                , "75f4b250-44a5-4493-820d-6060a705d73b"
                )
            ]
        , responseHttpVersion = HTTP/1.1
        , responseBody = "Unable to parse parameter merge-target-branch-id, Could not parse 'R-0b04980c-de49-4497-9e4b-8c32337ba910', expected B-<uu
id>"
        }

We are guessing that the merge-target is the original branch, which is a release branch, which Share is not expecting. How should we handle this better?

  1. Share backend probably shouldn't bomb, should just reply with a nicer error which ucm can report. Or it can simply ignore the UCM-provided default merge target in this situation and make it main.
  2. UCM should probably not allow changes to release branches and it should warn you if you're making a branch off of a release branch. "NOTE: You're branching off of a release, instead of a branch with history. This isn't typically what you want."

Or something.

pchiusano avatar Mar 18 '24 12:03 pchiusano

side note: the error could just be

Oops, looks like something isn't quite right. 
I received an unexpected error response from Share (HTTP Status 400, Invalid parameter).

Or similar. The dump of the HTTP Request and Response isn't useful to the user as they have no power to change those.

hojberg avatar Mar 18 '24 14:03 hojberg

  1. Is no good as long as we continue to squash releases.

aryairani avatar Jun 10 '24 17:06 aryairani

See: https://github.com/unisonweb/unison/issues/5341

hojberg avatar Sep 11 '24 15:09 hojberg