Re: [fossil-users] Fossil-NG ideas
On Tue, Nov 21, 2017 at 6:43 PM, <fossil-users-requ...@lists.fossil-scm.org> wrote: > > Date: Tue, 21 Nov 2017 15:25:37 -0700 > From: Warren Young <war...@etr-usa.com> > Subject: Re: [fossil-users] Fossil-NG ideas > > On Nov 21, 2017, at 2:09 PM, Ron W <ronw.m...@gmail.com> wrote: > > > > While I like the idea of a "smart default" for the file name, I'd rather > have an "--open" (or "-o") option to trigger the automatic "fossil open”. > > So…you want to remain more difficult to use than Git in this regard? > "fossil clone -o URL" would still be 1 step instead of 4 steps. > > 1. If the user actually wants to specify the name, the option would be > needed, anyway. > > No, they’d pass the FILENAME argument to “fossil clone,” just as you do > today. > My understanding of your proposal was that leaving off the file name would be the trigger for the git-like behavior. So, I would expect "fossil clone URL filename" to do what it does today: Create a repository file with the specified filename. No more. > This does open a new issue, however. What does this mean: > > $ fossil clone https://fossil-scm.org/ fsl > > Do you: > > a) get a fsl subdirectory containing the contents of the Fossil trunk > checkout, as Git would do; or > > b) get a fsl.fossil file, as someone up-thread apparently wants. That is, > assume the FILENAME argument is still a repository file name, and that if > .fossil is not given as an extension, add it? Or > > c) get a fsl file, as Fossil 2.4 and all prior versions do? I would expect c - do as Fossil does, today. If I want the git-like behavior, I'd type "fossil clone -o https://fossil-scm.org/ fsl" I'm all for "stealing" features from other VCSs. Just don't change break existing command syntax. As for something I'd suggest stealing, how about enhancing "fossil checkout" to accept an optional URL? When I first started using Fossil, one of the things that was confusing to me is that "svn checkout" maps to "fossil open", not "fossil checkout". It is still something I help others migrating from SVN to Fossil. If Fossil did not have a checkout command, it would have been less confusing. What I tell those I help is "Just use 'fossil open' and pretend there is no 'fossil checkout'." Anyway, "fossil checkout" could be made more like "svn checkout" merely by extending the syntax to allow an optional URL. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Wed, Nov 22, 2017 at 07:01:31PM -0500, Richard Hipp wrote: > > (2) Store true differential manifests. > > I'm thinking that Fossil-NG will probably do like Git and store > separate artifacts holding the content of each directory. (Git calls > these "Tree Objects"). I need to do more research, but I'm thinking > that for most check-ins, only one or two directory artifacts will > actually change, even if there are dozens or hundreds (or multiple > thousands as in NetBSD) of directory artifacts in a single check-out. I'm not sure splitting it up on a per-directory level well help that much. If you change a number of files in the same directory, they will have the same prefix and compress well (even without doing any adhoc prefix compression schemes). Changes are quite high that larger commits will scatter around many directories, it's a common theme i.e. for API changes in larger projects. The primary reason for storing tree objects in something like git is the lack of better indexing structures, I would say. In short, I would strongly distinguish between storage format and working format, optimizing the former for compactness and building up the latter when necessary. > > > > (3) Make cluster manifests non-permanent artifacts. > > > > I'm thinking of doing away with cluster artifacts entirely, and > managing sync in some other way. Having something like cluster artifacts can be useful, i.e. consider the typical case of one central main server and many clients pulling from it. If the server builds a ephemeral cluster ever so often and the clients remember the last cluster they got, they can just ask the server "what changed since this point". If the implementation of the communication process is actually asynchronous, adding a few round trips is not that bad as long as the waiting time is minimized. If the first request from the client starts with the last "cluster", the server can answer with the commits added on top. Client can filter out those it already has and request the new ones. While it gets the new commits, it can start requesting the file changes. Non-commit artifacts would essentially work like new leaf commits. A new "cluster" can either reference an existing one as delta or be send from scratch. It would still allow the server to do regular garbage collection. Joerg ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On 11/22/17, Joerg Sonnenbergerwrote: > > (1) The need to parse all artifacts on clone. Artificates should be > strongly typed, i.e. the system should at the very least distinguish > fully between "content" blobs and "meta data" blobs. Only the latter > have and should be parsed. That is a good point. I had already planned to do this, though for reasons other than what you propose. The fact that it reduces the amount of parsing work on a rebuild is a bonus that I had not previously thought of. > > (2) Store true differential manifests. I'm thinking that Fossil-NG will probably do like Git and store separate artifacts holding the content of each directory. (Git calls these "Tree Objects"). I need to do more research, but I'm thinking that for most check-ins, only one or two directory artifacts will actually change, even if there are dozens or hundreds (or multiple thousands as in NetBSD) of directory artifacts in a single check-out. > > (3) Make cluster manifests non-permanent artifacts. > I'm thinking of doing away with cluster artifacts entirely, and managing sync in some other way. -- D. Richard Hipp d...@sqlite.org ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Mon, Nov 20, 2017 at 01:33:11PM -0700, Warren Young wrote: > I see a new wiki article: > > https://www.fossil-scm.org/index.html/wiki?name=Fossil-NG There are two central design flaws in Fossil that affect larger repositories and those are the repos that primarily benefit from narrow/shallow clones. Properly addressing them is kind of a requirement for either. (1) The need to parse all artifacts on clone. Artificates should be strongly typed, i.e. the system should at the very least distinguish fully between "content" blobs and "meta data" blobs. Only the latter have and should be parsed. This has a number of important implications, but the easiest is that the number of artificates a rebuild or even just a sync has to look at goes down by a factor of 2 at the very least. For something like NetBSD src or pkgsrc, more like a factor of 10 (number of blobs in total / number of commits, i.e. the average commit touches 10 files). (2) Store true differential manifests. The current base line approach is a somewhat crude approximation. It has the advantage that only two manifests have to be parsed, but it makes the average manifest size much larger for larger file trees. The same benefit could be obtained by caching the file list, either every so often like the current base line or on-demand. The difference is that the cached manifests are not persistent meta data and don't have to be transfered. I would also add a point (3) which is kind of related to (1): (3) Make cluster manifests non-permanent artifacts. They can also consume a good amount of space and their purpose could be served by a Merkle tree as well. This is even more important when doing single branch sync. Joerg ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 21, 2017, at 2:09 PM, Ron Wwrote: > > While I like the idea of a "smart default" for the file name, I'd rather have > an "--open" (or "-o") option to trigger the automatic "fossil open”. So…you want to remain more difficult to use than Git in this regard? That’s not very Fossil. (Yes, I just adjectived your noun. Deal with it.) > 1. If the user actually wants to specify the name, the option would be > needed, anyway. No, they’d pass the FILENAME argument to “fossil clone,” just as you do today. This does open a new issue, however. What does this mean: $ fossil clone https://fossil-scm.org/ fsl Do you: a) get a fsl subdirectory containing the contents of the Fossil trunk checkout, as Git would do; or b) get a fsl.fossil file, as someone up-thread apparently wants. That is, assume the FILENAME argument is still a repository file name, and that if .fossil is not given as an extension, add it? Or c) get a fsl file, as Fossil 2.4 and all prior versions do? > 2. By not requiring the option, it would be hiding one of Fossil's advantages > over git and Hg: Multiple working copies without the overhead of multiple > repository copies. Easily handled via either: $ mkdir ../x ; cd ../x ; fossil open ../y/.fslrepo branch-x $ mkdir ../x ; cd ../x ; fossil open ../y branch-x In the second case, it sees that you’ve given it a directory name and that it contains a .fslrepo repository file. > 3. Adopting features from git is good, but let's not make Fossil too much > like git. Where it costs us nothing but development time and makes Fossil easier to use, let’s steal as much as possible. :) ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Tue, Nov 21, 2017 at 4:09 PM,wrote: > > Date: Tue, 21 Nov 2017 16:08:20 -0500 > From: Richard Hipp > > The overhead for a small batch of commits non-zero but it is > manageable. A full clone, on the other hand, is too expensive. To > give Fossil the ability to service clone requests from git or hg > clients, it would be necessary to implement some kind of cache wherein > all of the artifacts have been pre-translated. That means that the > storage space requirements on the server would be multiplied by 2 or 3 > (depending on whether your wanted to service just git or just hg or > both). > I assumed a full clone would be far too much. Thus why I was thinking that non-Fossil VCS clients would be served via shadow repositories, despite doubling (or more) the repository storage needs. If a project were so big that the storage requirements became an issue, then maybe make the shadow repositories be shallow and/or narrow. (If I'm correctly understanding how git implements branches, it would be possible to keep the git shadow shallow by periodically deleting old branch labels/tags (which would allow the referenced commits to be garbage collected (if not otherwise referenced by other means).) ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Mon, Nov 20, 2017 at 5:22 PM, <fossil-users-requ...@lists.fossil-scm.org> wrote: > > Date: Mon, 20 Nov 2017 13:33:11 -0700 > From: Warren Young <war...@etr-usa.com> > Subject: [fossil-users] Fossil-NG ideas > > There is one more thing Git really gets right compared to Fossil: > single-step clone-and-open. We should be able to do the same: > > $ fossil clone https://fossil-scm.org > > When the FILENAME parameter is not given, it produces a “Fossil” > subdirectory containing the contents of tip-of-trunk, with the directory > name coming from the project configuration under Admin. The SQLite repo > file is stored inside the subdirectory in a hidden file; I propose .fslrepo. > While I like the idea of a "smart default" for the file name, I'd rather have an "--open" (or "-o") option to trigger the automatic "fossil open". 1. If the user actually wants to specify the name, the option would be needed, anyway. 2. By not requiring the option, it would be hiding one of Fossil's advantages over git and Hg: Multiple working copies without the overhead of multiple repository copies. (Granted, more likely SVN users migrating to Fossil will appreciate this, but I know some former git and Hg users that quickly learned to appreciate this.) 3. Adopting features from git is good, but let's not make Fossil too much like git. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
OK. My mistake. I misunderstood the post. Cheers, Offray On 20/11/17 18:04, Warren Young wrote: > On Nov 20, 2017, at 3:41 PM, Offray Vladimir Luna Cárdenas >wrote: >> On 20/11/17 17:22, Warren Young wrote: >>> On Nov 20, 2017, at 3:12 PM, Offray Vladimir Luna Cárdenas >>> wrote: I thought that was the extension the shallow cloned repository would get if no extension name was specified. >>> If you say >>> >>>$ fossil clone https://fossil-scm.org fossil >>> >>> You get a repository file called “fossil”, not “fossil.fossil”. >> No. I was referring to the later case (fossil.fossil) > If you’re simply arguing that .fossil should be appended if a clone file name > is given but no extension is given, that’s a separate topic from anything > I’ve brought up. I’m ambivalent about the idea: I’m fine with the current > behavior and I wouldn’t be upset if it changed. > >>> In my clone-and-open scheme, leaving off the final parameter above would >>> give you a directory called “Fossil” >> Well my argument is related with how I setup the web server to serve >> files ended in ".fossil", but I can just add more extensions as the >> community decides. > I don’t see that clone-and-open impacts that either way. This feature would > be used primarily by people who want to use someone else’s repository. If > they re-serve it at all, it’ll probably be via a bare “fossil server” > command, not pointing to a directory of fossils at all or using a front-end > proxy layer. > > I’m targeting the GitHub use case here: someone publishes a project and > people want to just copy the repo contents down into a local directory to > mess with, in the fewest steps possible. Git allows you to do this in 2 > steps: clone & cd. Fossil currently requires 5, as I showed up-thread. > That’s a problem. > ___ > fossil-users mailing list > fossil-users@lists.fossil-scm.org > http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 20, 2017, at 4:04 PM, Warren Youngwrote: > > Git allows you to do this in 2 steps: clone & cd. Fossil currently requires > 5, as I showed up-thread. 4 steps. The fifth step in the post starting this thread is part of a separate thought. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 20, 2017, at 3:41 PM, Offray Vladimir Luna Cárdenaswrote: > > On 20/11/17 17:22, Warren Young wrote: >> On Nov 20, 2017, at 3:12 PM, Offray Vladimir Luna Cárdenas >> wrote: >>> I thought that was the extension >>> the shallow cloned repository would get if no extension name was specified. >> If you say >> >>$ fossil clone https://fossil-scm.org fossil >> >> You get a repository file called “fossil”, not “fossil.fossil”. > > No. I was referring to the later case (fossil.fossil) If you’re simply arguing that .fossil should be appended if a clone file name is given but no extension is given, that’s a separate topic from anything I’ve brought up. I’m ambivalent about the idea: I’m fine with the current behavior and I wouldn’t be upset if it changed. >> In my clone-and-open scheme, leaving off the final parameter above would >> give you a directory called “Fossil” > > Well my argument is related with how I setup the web server to serve > files ended in ".fossil", but I can just add more extensions as the > community decides. I don’t see that clone-and-open impacts that either way. This feature would be used primarily by people who want to use someone else’s repository. If they re-serve it at all, it’ll probably be via a bare “fossil server” command, not pointing to a directory of fossils at all or using a front-end proxy layer. I’m targeting the GitHub use case here: someone publishes a project and people want to just copy the repo contents down into a local directory to mess with, in the fewest steps possible. Git allows you to do this in 2 steps: clone & cd. Fossil currently requires 5, as I showed up-thread. That’s a problem. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 20, 2017, at 1:33 PM, Warren Youngwrote: > > There is one more thing Git really gets right compared to Fossil: single-step > clone-and-open. We should be able to do the same: I’ve prototyped this as a simple shell script: #!/bin/sh -e url=$1 shift tmprepo=`mktemp .fslrepo-XX` rm $tmprepo fossil clone "$url" $tmprepo name=`fossil sql -R "$tmprepo" \ "select value from config where name='short-project-name' \ or name='project-name' and value != '' limit 1"` if [ -z "$name" ] ; then echo "No project name in $tmprepo!" ; exit 1 ; fi if [ -d "$name" ] ; then echo "Already checked out as $name!" ; exit 1 ; fi if [ -e "$name" ] ; then echo "$name in the way; aborting!" ; exit 1 ; fi mkdir "$name" cd "$name" mv ../"$tmprepo" .fslrepo fossil open .fslrepo "$@" This is not useful as-is, since the whole point of this feature is that clone-and-open should be a single step with no other messing about by the user. What it proves, however, is that Fossil has everything needed to do this today. The existing pieces just need to be rearranged to allow it. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On 20/11/17 17:22, Warren Young wrote: > On Nov 20, 2017, at 3:12 PM, Offray Vladimir Luna Cárdenas >wrote: >> I thought that was the extension >> the shallow cloned repository would get if no extension name was specified. > If you say > > $ fossil clone https://fossil-scm.org fossil > > You get a repository file called “fossil”, not “fossil.fossil”. No. I was referring to the later case (fossil.fossil) > > In my clone-and-open scheme, leaving off the final parameter above would give > you a directory called “Fossil”, since I propose that we reuse the /zip and > /tarball option from Admin > Configuration. Since Fossil’s own repository > leaves that option unset, it uses the project name, which is capital-F > “Fossil”. > > The argument in this sub-thread, then, is what to call the actual repository > file. I’m not wedded to .fslrepo, but it does follow established conventions > nicely. .fslclone could also work, for example, though it would break the > 8.3 restriction that Fossil once upon a time held itself to for such critical > file names, since the equivalent on Windows would presumably be _fslclone. Well my argument is related with how I setup the web server to serve files ended in ".fossil", but I can just add more extensions as the community decides. Cheers, Offray ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 20, 2017, at 3:12 PM, Offray Vladimir Luna Cárdenaswrote: > > I thought that was the extension > the shallow cloned repository would get if no extension name was specified. If you say $ fossil clone https://fossil-scm.org fossil You get a repository file called “fossil”, not “fossil.fossil”. In my clone-and-open scheme, leaving off the final parameter above would give you a directory called “Fossil”, since I propose that we reuse the /zip and /tarball option from Admin > Configuration. Since Fossil’s own repository leaves that option unset, it uses the project name, which is capital-F “Fossil”. The argument in this sub-thread, then, is what to call the actual repository file. I’m not wedded to .fslrepo, but it does follow established conventions nicely. .fslclone could also work, for example, though it would break the 8.3 restriction that Fossil once upon a time held itself to for such critical file names, since the equivalent on Windows would presumably be _fslclone. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On 20/11/17 17:01, Warren Young wrote: > On Nov 20, 2017, at 2:55 PM, Offray Vladimir Luna Cárdenas >wrote: >> On 20/11/17 16:45, Carlo Miron wrote: >>> On Mon, Nov 20, 2017 at 9:33 PM, Warren Young wrote: >>> When the FILENAME parameter is not given, it produces a “Fossil” subdirectory containing the contents of tip-of-trunk, with the directory name coming from the project configuration under Admin. The SQLite repo file is stored inside the subdirectory in a hidden file; I propose .fslrepo. >>> Or maybe `.fossil`, as in Kyle's golang contribution? >>> https://go.googlesource.com/go/+/master/src/cmd/go/internal/get/vcs.go#330 >> I would go also with ".fossil" as default extension (is the one I use >> right now). > .fossil as an extension for clones is one thing: it is not simply a > convention due to “fossil server /DIRECTORY” scanning behavior. > > There is no reason the hidden file need follow this convention. In fact, it > would be harmful: > > $ fossil server /path/to/clone-and-open/checkout/directory > > This would find .fossil and require that you pass an empty name in the clone > URL. Confusing and maybe not even possible, since http://localhost:8080 and > http://localhost:8080/ are normally treated as equivalent. > > Furthermore, we already have .fsl* at the root of a checkout. Shouldn’t we > follow the existing convention? OK. I didn't understand this totally. I thought that was the extension the shallow cloned repository would get if no extension name was specified. Cheers, Offray ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 20, 2017, at 2:55 PM, Offray Vladimir Luna Cárdenaswrote: > > On 20/11/17 16:45, Carlo Miron wrote: >> On Mon, Nov 20, 2017 at 9:33 PM, Warren Young wrote: >> >>> When the FILENAME parameter is not given, it produces a “Fossil” >>> subdirectory containing the contents of tip-of-trunk, with the directory >>> name coming from the project configuration under Admin. The SQLite repo >>> file is stored inside the subdirectory in a hidden file; I propose .fslrepo. >> Or maybe `.fossil`, as in Kyle's golang contribution? >> https://go.googlesource.com/go/+/master/src/cmd/go/internal/get/vcs.go#330 > > I would go also with ".fossil" as default extension (is the one I use > right now). .fossil as an extension for clones is one thing: it is not simply a convention due to “fossil server /DIRECTORY” scanning behavior. There is no reason the hidden file need follow this convention. In fact, it would be harmful: $ fossil server /path/to/clone-and-open/checkout/directory This would find .fossil and require that you pass an empty name in the clone URL. Confusing and maybe not even possible, since http://localhost:8080 and http://localhost:8080/ are normally treated as equivalent. Furthermore, we already have .fsl* at the root of a checkout. Shouldn’t we follow the existing convention? ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On 20/11/17 16:45, Carlo Miron wrote: > On Mon, Nov 20, 2017 at 9:33 PM, Warren Youngwrote: > > >> There is one more thing Git really gets right compared to Fossil: >> single-step clone-and-open. We should be able to do the same: >> >> $ fossil clone https://fossil-scm.org >> >> When the FILENAME parameter is not given, it produces a “Fossil” >> subdirectory containing the contents of tip-of-trunk, with the directory >> name coming from the project configuration under Admin. The SQLite repo >> file is stored inside the subdirectory in a hidden file; I propose .fslrepo. > Or maybe `.fossil`, as in Kyle's golang contribution? > https://go.googlesource.com/go/+/master/src/cmd/go/internal/get/vcs.go#330 > > ㎝ > I would go also with ".fossil" as default extension (is the one I use right now). Cheers, Offray ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Nov 20, 2017, at 1:33 PM, Warren Youngwrote: > > 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 releasehttps://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 fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
Re: [fossil-users] Fossil-NG ideas
On Mon, Nov 20, 2017 at 9:33 PM, Warren Youngwrote: > There is one more thing Git really gets right compared to Fossil: single-step > clone-and-open. We should be able to do the same: > > $ fossil clone https://fossil-scm.org > > When the FILENAME parameter is not given, it produces a “Fossil” subdirectory > containing the contents of tip-of-trunk, with the directory name coming from > the project configuration under Admin. The SQLite repo file is stored inside > the subdirectory in a hidden file; I propose .fslrepo. Or maybe `.fossil`, as in Kyle's golang contribution? https://go.googlesource.com/go/+/master/src/cmd/go/internal/get/vcs.go#330 ㎝ -- |:**THE BEER-WARE LICENSE** *(Revision 42)*: | wrote this mail. As long as you retain | this notice you can do whatever you want with this stuff. | If we meet some day, and you think this stuff is worth it, | you can buy me a beer in return. |--Carlo Miron : ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
[fossil-users] Fossil-NG ideas
I see a new wiki article: https://www.fossil-scm.org/index.html/wiki?name=Fossil-NG I’m glad to see shallow and narrow clones being planned. The section on narrow clones should specify whether these can take on a life independent of the parent repository. That is, can they be used to shard a repository, such as one where each top level directory (TLD) is a separate project with no cross-TLD checkins? What happens if the narrow clone is re-shared? $ fossil clone --narrow src https://example.com/x x-src.fossil $ mkdir x $ cd x $ fossil open ../x-src.fossil $ fossil server If I then clone this narrow repository, does the clone’s /file URL show files present at the root of the grandparent repository and not available in the parent? I’d also like to be able to choose to make this permanent, popping a layer of the directory hierarchy, so that the narrow clone’s /file URL shows the contents of /src by default, not a lone “src” subdirectory. If there are cross-TLD checkins in this scenario, does the clone fail, warn, or proceed silently? It may be an important matter of policy since if checkin [1234abcd] is a cross-TLD checkin, “fossil up 1234abcd” means something different in a narrow clone than in a complete clone. I bring all of this up because I’d like both major behaviors for different use cases: 1. Sharded repositories where the permanently-narrow clones are re-shared under new names with no intention of going back and widening any of them, so the clone operation should warn if the clone has checkins that are incomplete because of the narrowing. This would be used to break up multi-project repositories into individual repositories. 2. Temporary narrow clones which simply save bandwidth and disk space, which automatically widen later on demand. If you roll back to a checkin that refers to artifacts not present in the local clone but they are present in the remote, the artifacts should be fetched at that point. It wouldn’t break my heart if we only get behavior #2 at first, since the resulting repository should still be faster as well as smaller, simply due to the limits of logarithmic scaling. But I would like frosting on my cupcake, too, if I can get it. :) Topic shift: There is one more thing Git really gets right compared to Fossil: single-step clone-and-open. We should be able to do the same: $ fossil clone https://fossil-scm.org When the FILENAME parameter is not given, it produces a “Fossil” subdirectory containing the contents of tip-of-trunk, with the directory name coming from the project configuration under Admin. The SQLite repo file is stored inside the subdirectory in a hidden file; I propose .fslrepo. ___ fossil-users mailing list fossil-users@lists.fossil-scm.org http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users