Cannot update manifest to Mercurial version of Carpet

Issue #427 closed
Erik Schnetter created an issue

I updated my manifest to using the Mercurial version of Carpet. Since I was using this version before, there was no change except that there is now also an anonymous url available. When I try to update, I receive the error message that the repo url changed, although it did not change at all.

My repo configuration was before:

Carpet, the AMR driver

!TARGET = $ARR !TYPE = git !AUTH_URL = carpetgit@carpetcode.org:carpet !URL = git://carpetcode.org/carpet

For experimental version, comment previous three lines and uncomment next two

Note that you will need to get access first (ask Erik Schnetter)

!TYPE = hg !URL = ssh://carpetmercurial@carpetcode.org/carpet

It is now:

# Carpet, the AMR driver !TARGET = $ARR !TYPE = hg !AUTH_URL = ssh://carpetmercurial@carpetcode.org/carpet !URL = http://www.carpetcode.org/hg/carpet # For the git version of Carpet, comment the previous three lines and # uncomment the next three #!TYPE = git #!AUTH_URL = carpetgit@carpetcode.org:carpet #!URL = git://carpetcode.org/carpet

In particular, the url did not change, but it moved from URL to AUTH_URL, while the URL method is now new. The url required authorization all along, but since GetComponents does not support having an AUTH_URL without having a URL, it was given as URL.

When I give the command

$ ./bin/GetComponents --update --root=. manifest/einsteintoolkit.th

I receive the error message:

Error: The URL for Carpet/doc has changed, please perform a clean checkout.

Note that I don't use (and I think I never did use) the -a flag for GetComponents.

I checked the repository, and the current url is the same as in the manifest:

$ (cd repos/carpet; hg showconfig paths.default) ssh://carpetmercurial@carpetcode.org/carpet

Where does GetComponents store the previous url? How can I make it believe that my repo url did not actually change? Is this connected with switching from an anonymous to an authorized checkout? If so, how do I make this switch "officially"?

Keyword:

Comments (4)

  1. Eric Seidel
    • removed comment

    Look at $HOME/.crl/users. That file stores authentication info for GetComponents (just a list of usernames and associated URLs).

    My guess is that you previously selected anonymous for carpet (entering '-' at the prompt during the first checkout), which should store "N/A" with the URL (probably the hg ssh URL). If this is the case, GetComponents will see this and default to the anonymous URL, which is different from the one stored by hg as the default path. Hence your issue.

    To fix this, just open $HOME/.crl/users, and delete the line containing Carpet's URL (or change "N/A" to anything else, GetComponents doesn't care about the actual saved username for git/hg since they use ssh).

  2. Erik Schnetter reporter
    • removed comment

    No, I never chose "anonymous", because the old url was never accessible via anonymous checkout.

    I did something to /.crl/users, but unfortunately don't remember what. At the moment, the corresponding url is not in /.crl/users, and there is no N/A in there either. The checkout worked.

    Thanks!

  3. Eric Seidel
    • changed status to resolved
    • removed comment

    Replying to [comment:2 eschnett]:

    No, I never chose "anonymous", because the old url was never accessible via anonymous checkout.

    I'm not saying that you actually attempted an anonymous clone, just that you chose to use !URL instead of !AUTH_URL, which you would have to have done if you wanted to use the hg URL in your first snippet. For git and hg, !AUTH_URL and !URL is really a semantic difference; GetComponents treats them identically.

    I did something to /.crl/users, but unfortunately don't remember what. At the moment, the corresponding url is not in /.crl/users, and there is no N/A in there either. The checkout worked.

    Glad it's working for you now. I'll go ahead and close the ticket :)

  4. Log in to comment