FIX: Do not shorten commit hashes for compare links (#128)
Using `git rev-parse --short` will adapt the number of characters based on the number of commits in the repository. In a development checkout of Discourse, it'll currently output 10 characters, making the chance of a collision minuscule. However, in production we use a shallow clone of the Discourse repository. That means that `git rev-parse --short` only outputs 8 characters. On the `main` branch (with almost 50k commits), we currently have 6 7-character collisions, and no 8-character collisions. However, when looking beyond the `main` branch, 8-character collisions [have been observed](https://meta.discourse.org/t/193320/3). This commit updates docker_manager to use the full commit hash internally, and for GitHub comparison links. In the UI, hashes are truncated to 8 characters, and the full hash is displayed on mouseover.
This commit is contained in:
parent
6ecdddd687
commit
11d61cb82e
|
|
@ -102,7 +102,9 @@ return n.default.ajax(t.default.getAppURL("/admin/docker/ps"),{dataType:"text"})
|
|||
var a=r
|
||||
e.default=a})),define("manager-client/models/repo",["exports","manager-client/discourse","jquery"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
||||
var r=[]
|
||||
function a(e){return e.map((function(e){return e.get("version")})).join(", ")}var o=Ember.Object.extend({unloaded:!0,checking:!1,checkingStatus:Ember.computed.or("unloaded","checking"),upToDate:Ember.computed("upgrading","version","latest.version",(function(){return!this.get("upgrading")&this.get("version")===this.get("latest.version")})),prettyVersion:Ember.computed("version","pretty_version",(function(){return this.get("pretty_version")||this.get("version")})),prettyLatestVersion:Ember.computed("latest.{version,pretty_version}",(function(){return this.get("latest.pretty_version")||this.get("latest.version")})),get shouldCheck(){if(Ember.isNone(this.get("version")))return!1
|
||||
function a(e){return e.map((function(e){return e.get("version")})).join(", ")}var o=Ember.Object.extend({unloaded:!0,checking:!1,checkingStatus:Ember.computed.or("unloaded","checking"),upToDate:Ember.computed("upgrading","version","latest.version",(function(){return!this.get("upgrading")&this.get("version")===this.get("latest.version")})),prettyVersion:Ember.computed("version","pretty_version",(function(){var e
|
||||
return this.get("pretty_version")||(null===(e=this.get("version"))||void 0===e?void 0:e.substring(0,8))})),prettyLatestVersion:Ember.computed("latest.{version,pretty_version}",(function(){var e
|
||||
return this.get("latest.pretty_version")||(null===(e=this.get("latest.version"))||void 0===e?void 0:e.substring(0,8))})),get shouldCheck(){if(Ember.isNone(this.get("version")))return!1
|
||||
if(this.get("checking"))return!1
|
||||
var e=this.get("lastCheckedAt")
|
||||
return!e||(new Date).getTime()-e>6e4},repoAjax:function(e,r){return(r=r||{}).data=this.getProperties("path","version","branch"),n.default.ajax(t.default.getAppURL(e),r)},findLatest:function(){var e=this
|
||||
|
|
@ -149,7 +151,7 @@ e.default=t})),define("manager-client/templates/components/progress-bar",["expor
|
|||
var t=Ember.HTMLBars.template({id:"a165sycW",block:'{"symbols":[],"statements":[[10,"div"],[15,0,[31,["progress-bar progress-bar-striped ",[30,[36,1],[[35,0],"progress-bar-animated"],null]]]],[15,5,[34,2]],[12],[13],[2,"\\n"]],"hasEval":false,"upvars":["active","if","barStyle"]}',meta:{moduleName:"manager-client/templates/components/progress-bar.hbs"}})
|
||||
e.default=t}))
|
||||
define("manager-client/templates/components/repo-status",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
||||
var t=Ember.HTMLBars.template({id:"i42wYwsY",block:'{"symbols":[],"statements":[[10,"td"],[12],[2,"\\n"],[6,[37,4],[[35,6]],null,[["default"],[{"statements":[[2," "],[10,"img"],[14,0,"check-circle"],[15,"src",[34,6]],[15,"alt",[34,7]],[15,"title",[34,7]],[12],[13],[2,"\\n"]],"parameters":[]}]]],[13],[2,"\\n"],[10,"td"],[12],[2,"\\n "],[10,"a"],[15,6,[31,[[34,2,["url"]]]]],[12],[1,[35,2,["name"]]],[13],[2,"\\n "],[10,"span"],[14,0,"current commit-hash"],[12],[1,[35,2,["prettyVersion"]]],[13],[2,"\\n"],[13],[2,"\\n"],[10,"td"],[12],[2,"\\n"],[6,[37,4],[[35,2,["checkingStatus"]]],null,[["default","else"],[{"statements":[[2," Checking for new version...\\n"]],"parameters":[]},{"statements":[[6,[37,4],[[35,2,["upToDate"]]],null,[["default","else"],[{"statements":[[2," Up to date\\n"]],"parameters":[]},{"statements":[[2," "],[10,"div"],[14,0,"new-version"],[12],[2,"\\n "],[10,"h4"],[12],[2,"New Version Available!"],[13],[2,"\\n "],[10,"ul"],[12],[2,"\\n "],[10,"li"],[12],[2,"Remote Version: "],[10,"span"],[14,0,"new commit-hash"],[12],[1,[35,2,["prettyLatestVersion"]]],[13],[13],[2,"\\n "],[10,"li"],[12],[2,"Last Updated:\\n"],[6,[37,4],[[35,2,["latest","date"]]],null,[["default","else"],[{"statements":[[2," "],[1,[30,[36,3],[[35,2,["latest","date"]]],[["interval"],[1000]]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," —\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"li"],[14,0,"new-commits"],[12],[1,[30,[36,5],[[35,2,["latest","commits_behind"]],[35,2,["version"]],[35,2,["latest","version"]],[35,2,["url"]]],null]],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,4],[[35,2,["upgrading"]]],null,[["default","else"],[{"statements":[[2," "],[11,"button"],[24,0,"btn"],[4,[38,1],[[32,0],"upgrade"],null],[12],[2,"Currently Upgrading..."],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[11,"button"],[24,0,"upgrade-button btn"],[16,"disabled",[34,0]],[4,[38,1],[[32,0],"upgrade"],null],[12],[2,"Upgrade"],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]],[13],[2,"\\n"]],"hasEval":false,"upvars":["upgradeDisabled","action","repo","moment-from-now","if","new-commits","officialRepoImageSrc","officialRepoImageTitle"]}',meta:{moduleName:"manager-client/templates/components/repo-status.hbs"}})
|
||||
var t=Ember.HTMLBars.template({id:"4IqtgNP6",block:'{"symbols":[],"statements":[[10,"td"],[12],[2,"\\n"],[6,[37,4],[[35,6]],null,[["default"],[{"statements":[[2," "],[10,"img"],[14,0,"check-circle"],[15,"src",[34,6]],[15,"alt",[34,7]],[15,"title",[34,7]],[12],[13],[2,"\\n"]],"parameters":[]}]]],[13],[2,"\\n"],[10,"td"],[12],[2,"\\n "],[10,"a"],[15,6,[31,[[34,2,["url"]]]]],[12],[1,[35,2,["name"]]],[13],[2,"\\n "],[10,"span"],[14,0,"current commit-hash"],[15,"title",[34,2,["version"]]],[12],[1,[35,2,["prettyVersion"]]],[13],[2,"\\n"],[13],[2,"\\n"],[10,"td"],[12],[2,"\\n"],[6,[37,4],[[35,2,["checkingStatus"]]],null,[["default","else"],[{"statements":[[2," Checking for new version...\\n"]],"parameters":[]},{"statements":[[6,[37,4],[[35,2,["upToDate"]]],null,[["default","else"],[{"statements":[[2," Up to date\\n"]],"parameters":[]},{"statements":[[2," "],[10,"div"],[14,0,"new-version"],[12],[2,"\\n "],[10,"h4"],[12],[2,"New Version Available!"],[13],[2,"\\n "],[10,"ul"],[12],[2,"\\n "],[10,"li"],[12],[2,"Remote Version: "],[10,"span"],[14,0,"new commit-hash"],[15,"title",[34,2,["latestVersion"]]],[12],[1,[35,2,["prettyLatestVersion"]]],[13],[13],[2,"\\n "],[10,"li"],[12],[2,"Last Updated:\\n"],[6,[37,4],[[35,2,["latest","date"]]],null,[["default","else"],[{"statements":[[2," "],[1,[30,[36,3],[[35,2,["latest","date"]]],[["interval"],[1000]]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," —\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"li"],[14,0,"new-commits"],[12],[1,[30,[36,5],[[35,2,["latest","commits_behind"]],[35,2,["version"]],[35,2,["latest","version"]],[35,2,["url"]]],null]],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,4],[[35,2,["upgrading"]]],null,[["default","else"],[{"statements":[[2," "],[11,"button"],[24,0,"btn"],[4,[38,1],[[32,0],"upgrade"],null],[12],[2,"Currently Upgrading..."],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[11,"button"],[24,0,"upgrade-button btn"],[16,"disabled",[34,0]],[4,[38,1],[[32,0],"upgrade"],null],[12],[2,"Upgrade"],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "]],"parameters":[]}]]]],"parameters":[]}]]],[13],[2,"\\n"]],"hasEval":false,"upvars":["upgradeDisabled","action","repo","moment-from-now","if","new-commits","officialRepoImageSrc","officialRepoImageTitle"]}',meta:{moduleName:"manager-client/templates/components/repo-status.hbs"}})
|
||||
e.default=t})),define("manager-client/templates/components/x-console",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
||||
var t=Ember.HTMLBars.template({id:"ZW89qKKO",block:'{"symbols":[],"statements":[[1,[34,0]],[2,"\\n"]],"hasEval":false,"upvars":["output"]}',meta:{moduleName:"manager-client/templates/components/x-console.hbs"}})
|
||||
e.default=t})),define("manager-client/templates/index",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
||||
|
|
@ -161,4 +163,4 @@ var t=Ember.HTMLBars.template({id:"VQmN43M/",block:'{"symbols":[],"statements":[
|
|||
e.default=t})),define("manager-client/templates/upgrade",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
|
||||
var t=Ember.HTMLBars.template({id:"IO8vYqzv",block:'{"symbols":[],"statements":[[10,"h3"],[12],[2,"Upgrade "],[1,[34,4]],[13],[2,"\\n\\n"],[1,[30,[36,8],null,[["percent"],[[35,7]]]]],[2,"\\n\\n"],[6,[37,3],[[35,9]],null,[["default"],[{"statements":[[2," "],[10,"p"],[12],[2,"Upgrade completed successfully!"],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,3],[[35,10]],null,[["default"],[{"statements":[[2," "],[10,"p"],[12],[2,"Sorry, there was an error upgrading Discourse. Please check the logs below."],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,3],[[35,11]],null,[["default","else"],[{"statements":[[6,[37,6],[[35,5]],null,[["default","else"],[{"statements":[[2," "],[10,"p"],[12],[1,[34,4]],[2," is at the newest version."],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"p"],[12],[2,"Everything is up-to-date."],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]},{"statements":[[2," "],[10,"div"],[14,5,"clear: both"],[12],[2,"\\n "],[11,"button"],[16,"disabled",[34,1]],[24,0,"btn"],[4,[38,0],[[32,0],"start"],null],[12],[1,[34,2]],[13],[2,"\\n"],[6,[37,3],[[35,1]],null,[["default"],[{"statements":[[2," "],[11,"button"],[24,0,"btn unlock"],[4,[38,0],[[32,0],"resetUpgrade"],null],[12],[2,"Reset Upgrade"],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[1,[30,[36,13],null,[["output","followOutput"],[[35,12],true]]]],[2,"\\n"]],"hasEval":false,"upvars":["action","upgrading","upgradeButtonText","if","title","multiUpgrade","unless","percent","progress-bar","complete","failed","isUpToDate","output","x-console"]}',meta:{moduleName:"manager-client/templates/upgrade.hbs"}})
|
||||
e.default=t})),define("manager-client/transforms/boolean",["exports","@ember-data/serializer/-private"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.BooleanTransform}})})),define("manager-client/transforms/date",["exports","@ember-data/serializer/-private"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.DateTransform}})})),define("manager-client/transforms/number",["exports","@ember-data/serializer/-private"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.NumberTransform}})})),define("manager-client/transforms/string",["exports","@ember-data/serializer/-private"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.StringTransform}})})),define("manager-client/config/environment",[],(function(){try{var e="manager-client/config/environment",t=document.querySelector('meta[name="'+e+'"]').getAttribute("content"),n={default:JSON.parse(decodeURIComponent(t))}
|
||||
return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(r){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("manager-client/app").default.create({name:"manager-client",version:"0.0.0+f6307675"})
|
||||
return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(r){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("manager-client/app").default.create({name:"manager-client",version:"0.0.0+815ed175"})
|
||||
|
|
|
|||
|
|
@ -32,11 +32,11 @@ class DockerManager::GitRepo
|
|||
end
|
||||
|
||||
def latest_local_commit
|
||||
run "rev-parse --short HEAD"
|
||||
run "rev-parse HEAD"
|
||||
end
|
||||
|
||||
def latest_origin_commit
|
||||
run "rev-parse --short #{tracking_branch}"
|
||||
run "rev-parse #{tracking_branch}"
|
||||
end
|
||||
|
||||
def latest_local_tag_version
|
||||
|
|
|
|||
|
|
@ -24,11 +24,14 @@ const Repo = EmberObject.extend({
|
|||
}),
|
||||
|
||||
prettyVersion: computed("version", "pretty_version", function () {
|
||||
return this.get("pretty_version") || this.get("version");
|
||||
return this.get("pretty_version") || this.get("version")?.substring(0, 8);
|
||||
}),
|
||||
|
||||
prettyLatestVersion: computed("latest.{version,pretty_version}", function () {
|
||||
return this.get("latest.pretty_version") || this.get("latest.version");
|
||||
return (
|
||||
this.get("latest.pretty_version") ||
|
||||
this.get("latest.version")?.substring(0, 8)
|
||||
);
|
||||
}),
|
||||
|
||||
get shouldCheck() {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<a href="{{repo.url}}">{{repo.name}}</a>
|
||||
<span class="current commit-hash">{{repo.prettyVersion}}</span>
|
||||
<span class="current commit-hash" title={{repo.version}}>{{repo.prettyVersion}}</span>
|
||||
</td>
|
||||
<td>
|
||||
{{#if repo.checkingStatus}}
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
<div class='new-version'>
|
||||
<h4>New Version Available!</h4>
|
||||
<ul>
|
||||
<li>Remote Version: <span class="new commit-hash">{{repo.prettyLatestVersion}}</span></li>
|
||||
<li>Remote Version: <span class="new commit-hash" title={{repo.latestVersion}}>{{repo.prettyLatestVersion}}</span></li>
|
||||
<li>Last Updated:
|
||||
{{#if repo.latest.date}}
|
||||
{{moment-from-now repo.latest.date interval=1000}}
|
||||
|
|
|
|||
Loading…
Reference in New Issue