Hi Ethan,
        Sorry for the delay, answers are in-line...

                                        Thank you,
                                        Clay

On Thu, 26 Mar 2009, Ethan Quach wrote:

> Clay,
>
> Clay Baenziger wrote:
>> Hi Ethan,
>>     With regards to bug 7383. I see issues surrounding this bug as:
>>     * Being able to ensure an AI client gets a manifest with keywords
>>       which it supports (i.e. server running build Y, client running
>>       build X, x<y)
>>     * Being able to identify what build (of our bits) an AI client is
>>       running
>
> Can you elaborate on how you see the second bullet is related?  That
> seems to be more an issue of the installer bits being compatible with
> bits that are laid down.  I sent out a separate proposal for that
> earlier this week.  Feel free to comment on that.

Ethan, I see having the build available to determine manifests being a 
useful thing for system configuration and perhaps even packages to install 
too. For example, one might not want to install a package on an older 
build where there's a security or performance issue.

>>
>>     To achieve these two ends:
>>     * The schema could define what changeset (of slim_source) the
>>       feature being defined was added. (Perhaps just a changeset=###
>>       attribute that can be added to features in the schema.) Then,
>>       publish_manifest will store what the minimum changeset necessary
>>       for that schema in the criteria database as a criteria.
>
> I think you're confusing the changeset ID with the revision number.
> What you're describing above requires a sequential ordering, but
> changeset IDs are not sequentially ordered, they are just 40 digit
> hex unique identifiers.
>
> The revision number is ordered, but they would be unreliable for this
> usage because you can't rely on them to be the same over time.  i.e.
> revision number 545 isn't always going to describe changeset X.
>
> See this URL for descriptions of these Mercurial terms
> http://www.selenic.com/mercurial/wiki/index.cgi/FAQ#head-64d21ec75f556ed21f840436727a82655fdfb5ac
>

Yes, you're right, I meant revision number. Hrm, I see it mentioned that 
revision numbers are not stable across multiple repository copies but off 
our one development repo they should remain stable from: "A changeset is 
identified uniquely by a changeset ID. In a single repository, you can 
identify it using a revision number." -- 
http://www.selenic.com/mercurial/wiki/index.cgi/ChangeSet

>>     * The client can send which changeset of slim_source it was built
>>       off of in the AI server<->client criteria exchange.
>
> Exactly my point.  Once you record the revision number off into the
> built image, you can't reliably compare it back to the revision number
> in the manifest because the former or latter's revision number could
> have been gotten after a shift.

Yes, there is a problem, for example, when we move from our development 
repo to ON. We could instead use a tags when available and record a tag 
and revision number falling back if no tag or some such.

>>     * Then all that is necessary to ensure the client gets an
>>       appropriate manifest is to have the AI webserver treat the
>>       changeset criteria as just any other criteria -- no work
>>       necessary.
>
> I think you're on the right track with this, but instead of using
> the repository revision numbers, why not just cook up our own ordered
> numbers every time we change/add features to the manifest?  What's
> wrong with 1, 2, 3, ...

I see requiring human intervention to be a bad idea since it's limited 
to when someone updates the version number (so not as generalized and 
prone to forgetting).

>
> thanks,
> -ethan
>
>
>>
>>     I see this as requiring fairly little implementation (~5 days with 
>> testing). Let me know what's might be missed by such an approach or how 
>> else versioning could be done though.
>>                             Thank you,
>>                             Clay
>

Reply via email to