Page MenuHomePhabricator

I think callsigns are ugly
Closed, ResolvedPublic

Description

Callsigns are ugly, and in many places the context makes the commit unambiguously tied to that repository.

/diffusion

  • Most recent commit for each repository

{F135348, size=full}
Viewing a commit

  • Breadcrumbs {F135350, size=full}
  • Parent commit {F135352, size=full}
  • Commit id in header above changes {F135354, size=full}

Repo homepage and Repo history and File history

  • Commits in the history list {F135356, size=full} {F135358, size=full}

Viewing deleted file

  • Places in message where it mentions commits where file was deleted and when it last existed
  • At the top where it says "Commit" (this applies to viewing any file, not just deleted files) {F135360}

Event Timeline

bluehawk raised the priority of this task from to Wishlist.
bluehawk updated the task description. (Show Details)
bluehawk added a project: Phabricator.
bluehawk added a subscriber: bluehawk.

Okay, here's a tentative plan to attack this:

  • Do T4245.
  • Add an alternate rendering method like "getCommitNameInUnambiguousContext()" (maybe this is a flag or something).
  • That method renders the identifier only if the repository has no callsign.
  • You remove all your callsigns.
bluehawk claimed this task.

Would callsigns still have to exist, because old references to rP1234abc would break if you deleted the P callsign from the repository?

They'd break, as would all existing URLs referencing /diffusion/X/. However, the UIs would become pretty, so this seems like a small price to pay.

Wait, so in this situation, would the urls be /diffusion/23/?

I think that's uglier than using the callsigns. We already enforce our repository names to be url-safe, and we would like to use the names in urls and remotes (we already have a hack in place that let's us clone git@phabricator.company.com:RepositoryName). We think that this conveys much more context and is clearer than arbitrary callsigns.

For example:

  • http://phabricator.company.com/diffusion/SR/browse/master/composer.json
  • git clone git@phabricator.company.com:diffusion/SR
    • This is alright, but we think it's ugly.
  • http://phabricator.company.com/diffusion/23/browse/master/composer.json
  • git clone git@phabricator.company.com:diffusion/23
    • This is even worse, as even less information is conveyed.
  • http://phabricator.company.com/diffusion/SecretReposotory/browse/master/composer.json
  • git clone git@phabricator.company.com:diffusion/SecretRepository or git clone git@phabricator.company.com:SecretRepository
    • This is ideally what we would want.

As far as linking to commits, (at least for us) in most situations, just the hash is enough. If you do have duplicate hashes, R23:abc12345 or something (as mentioned in T4245) to identify "I mean this repository" should be fine. Upon second though, in our example above, the user would have no way of knowing what the ID of the repository is. If the repository names are url safe, it's pretty trivial to do SecretProject@abc1234

In reference to the UIs becoming pretty, almost all of the items and pictures I listed above, the callsign could be removed now, before T4245 is done. The callsign in all of those is redundant, it's already clear which repo we are talking about. There are already places in the ui where we reference commits by the revision id with no callsign, specifically when looking at blame:

undefined (74×236 px, 7 KB)

The remarkup-friendly commit hash (with the preceding 'r' and callsign) is (most likely) shown all over the UI there to make it easy for users to copy and know how to reference them elsewhere - I doubt anyone thinks you need to be constantly reminded what repo you're looking at several times per page.