On Nov 20, 2017, at 1:33 PM, Warren Young <[email protected]> wrote:
>
> I see a new wiki article:
>
> https://www.fossil-scm.org/index.html/wiki?name=Fossil-NG
Shallow clones bear some thinking, too.
Let us posit that “fossil clone” takes a -shallow option with no argument,
telling it to fetch only the artifacts for the files at the tip-of-trunk. A
-shallow clone should also pull non-closed tickets and wiki articles where the
latest checkin is not empty.
To allow shallow clones of a different branch than trunk, “fossil clone” could
take a -branch option. If you then say “fossil up trunk” from the checkout of
such a clone, it would fetch all artifacts checked in on the trunk since clone
time.
More broadly, “fossil update” of a shallow clone never pulls history past the
clone date unless you specify an older date or checkin ID with the VERSION
argument.
Then let us add -limit which takes the same VERSION argument as fossil update,
which limits the depth of the history:
$ fossil clone -limit 2017-11-01 https://fossil-scm.org
$ fossil clone -limit abcde12345 https://fossil-scm.org
$ fossil clone -limit release https://fossil-scm.org
(Here you see me using the new clone-and-open behavior we will shortly be
getting. Ehehm. ;) )
The last is interesting: it means “give me the latest tagged release plus all
changes made since then.”
I’d like to see a small expansion of VERSION:
$ fossil clone -limit "30 days" https://fossil-scm.org
It needs a new syntax because you can’t just take a bare integer as a day
count, since that could be ambiguous with checkin IDs. Simple suffixes like
“30d” are also ambiguous, so if we require the space, then it breaks the
ambiguity. It lets us add other multipliers, too, like “1 year”. All of this
should be easy to do with SQLite date arithmetic.
I say it should modify the meaning of VERSION because it has applicability
outside of shallow clones. “fossil update ’30 days’” means “check out the
version closest to 30 days ago.” It could even take an ignored “ ago” suffix
purely for readability, such as in scripts. This might make starting a bisect
a bit easier.
If multiple -limit arguments are given, Fossil will take the oldest one as the
true limit, so you can use it to list all the tags and branches that must be
present in the clone; if the oldest listed item is a branch, you get the tip of
that branch and everything newer than it. This would be useful in automated
system deployment scenarios, where a script must specify the requirements for
the checkout without knowing in advance which of the -limit values are oldest
at any given point in time. (Puppet, Chef, Ansible…)
My current sense is that -shallow and -narrow should interact with AND logic.
This:
$ fossil clone -limit release -narrow src https://fossil-scm.org
should result in only a src subdirectory which won’t build because it’s missing
Makefile.in, configure, auto.def, and autosetup/ at least. If the user wanted
a buildable “release” clone, he should have left off the -narrow option; else,
why allow these options to interact at all?
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users