Proof of Concept: FileTree and Fossil
Hi all, I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html Pierce
This is cool. I'm curious to see if we could manage fossil back-end via iceberg. Stef On Tue, 28 Feb 2017 01:19:50 +0100, Pierce Ng <pierce@samadhiweb.com> wrote:
Hi all, I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html Pierce
-- Using Opera's mail client: http://www.opera.com/mail/
I'm also curious about iceberg integration. I'm also an advocate for fossil: I like its lightness as process and software, offering full stack distributed collaboration in just 2 Mb (wiki, tickets, DVCS, etc.) I can not catch up with upcoming Pharo 6, but hopefully after being released I will be able to test fossil stuff, particularly because is the chosen collaboration backend for Grafoscopio. BTW, when installing Grafoscopio you get a FossilRepo object that is used to query Fossil repositories via the JSON API and update documentation. Still in early stages, but I will experiment how Pierce's Fossil support give a more cohesive user experience when working with publication and collaboration of interactive notebooks. Cheers, Offray On 28/02/17 02:12, stepharong wrote:
This is cool. I'm curious to see if we could manage fossil back-end via iceberg.
Stef
On Tue, 28 Feb 2017 01:19:50 +0100, Pierce Ng <pierce@samadhiweb.com> wrote:
Hi all, I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html Pierce
Hi Offray, is your FossilRepo object using a JSON over HTTP API to Fossil? It could make Fossil an interesting candidate, because it could mean a single http API (and not one API per git hosting provider...) Regards, Thierry 2017-02-28 16:09 GMT+01:00 Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com>:
I'm also curious about iceberg integration. I'm also an advocate for fossil: I like its lightness as process and software, offering full stack distributed collaboration in just 2 Mb (wiki, tickets, DVCS, etc.) I can not catch up with upcoming Pharo 6, but hopefully after being released I will be able to test fossil stuff, particularly because is the chosen collaboration backend for Grafoscopio.
BTW, when installing Grafoscopio you get a FossilRepo object that is used to query Fossil repositories via the JSON API and update documentation. Still in early stages, but I will experiment how Pierce's Fossil support give a more cohesive user experience when working with publication and collaboration of interactive notebooks.
Cheers,
Offray
On 28/02/17 02:12, stepharong wrote:
This is cool. I'm curious to see if we could manage fossil back-end via iceberg.
Stef
On Tue, 28 Feb 2017 01:19:50 +0100, Pierce Ng <pierce@samadhiweb.com> wrote:
Hi all,
I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html Pierce
Hi Thierry, What I'm using is the Fossil JSON API as described in [1]. Managing Grafoscopio documentation with it is pretty easy and yes I believe it could help in bringing a unified API across several repositories (I have not tested that though). [1] http://fossil.wanderinghorse.net/repos/fwiki/index.cgi/wiki/README Cheers, Offray On 28/02/17 10:26, Thierry Goubier wrote:
Hi Offray,
is your FossilRepo object using a JSON over HTTP API to Fossil? It could make Fossil an interesting candidate, because it could mean a single http API (and not one API per git hosting provider...)
Regards,
Thierry
2017-02-28 16:09 GMT+01:00 Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>>:
I'm also curious about iceberg integration. I'm also an advocate for fossil: I like its lightness as process and software, offering full stack distributed collaboration in just 2 Mb (wiki, tickets, DVCS, etc.) I can not catch up with upcoming Pharo 6, but hopefully after being released I will be able to test fossil stuff, particularly because is the chosen collaboration backend for Grafoscopio.
BTW, when installing Grafoscopio you get a FossilRepo object that is used to query Fossil repositories via the JSON API and update documentation. Still in early stages, but I will experiment how Pierce's Fossil support give a more cohesive user experience when working with publication and collaboration of interactive notebooks.
Cheers,
Offray
On 28/02/17 02:12, stepharong wrote:
This is cool. I'm curious to see if we could manage fossil back-end via iceberg.
Stef
On Tue, 28 Feb 2017 01:19:50 +0100, Pierce Ng <pierce@samadhiweb.com <mailto:pierce@samadhiweb.com>> wrote:
Hi all, I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html <http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html> Pierce
2017-02-28 16:43 GMT+01:00 Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com>:
Hi Thierry,
What I'm using is the Fossil JSON API as described in [1]. Managing Grafoscopio documentation with it is pretty easy and yes I believe it could help in bringing a unified API across several repositories (I have not tested that though). [1] http://fossil.wanderinghorse.net/repos/fwiki/index.cgi/wiki/README
You probably intended [2], isn't it? I wasn't thinking much about multiple repos, but it could be one target. I was just thinking that there was/is one attempt to have a close integration to github API over HTTP in Pharo, and that this effort would have to b partially redone for, say GitLab, or Bitbucket because git does not defines a HTTP API and every hosting company creates one, whereas in Fossil everybody uses the JSON API. Regards, Thierry [2] https://docs.google.com/document/d/1fXViveNhDbiXgCuE7QDXQOKeFzf2qNUkBEgiUvoq...
Cheers,
Offray
On 28/02/17 10:26, Thierry Goubier wrote:
Hi Offray,
is your FossilRepo object using a JSON over HTTP API to Fossil? It could make Fossil an interesting candidate, because it could mean a single http API (and not one API per git hosting provider...)
Regards,
Thierry
2017-02-28 16:09 GMT+01:00 Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com>:
I'm also curious about iceberg integration. I'm also an advocate for fossil: I like its lightness as process and software, offering full stack distributed collaboration in just 2 Mb (wiki, tickets, DVCS, etc.) I can not catch up with upcoming Pharo 6, but hopefully after being released I will be able to test fossil stuff, particularly because is the chosen collaboration backend for Grafoscopio.
BTW, when installing Grafoscopio you get a FossilRepo object that is used to query Fossil repositories via the JSON API and update documentation. Still in early stages, but I will experiment how Pierce's Fossil support give a more cohesive user experience when working with publication and collaboration of interactive notebooks.
Cheers,
Offray
On 28/02/17 02:12, stepharong wrote:
This is cool. I'm curious to see if we could manage fossil back-end via iceberg.
Stef
On Tue, 28 Feb 2017 01:19:50 +0100, Pierce Ng <pierce@samadhiweb.com> wrote:
Hi all,
I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html Pierce
On 28/02/17 10:56, Thierry Goubier wrote:
2017-02-28 16:43 GMT+01:00 Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com <mailto:offray.luna@mutabit.com>>:
Hi Thierry,
What I'm using is the Fossil JSON API as described in [1]. Managing Grafoscopio documentation with it is pretty easy and yes I believe it could help in bringing a unified API across several repositories (I have not tested that though).
[1] http://fossil.wanderinghorse.net/repos/fwiki/index.cgi/wiki/README <http://fossil.wanderinghorse.net/repos/fwiki/index.cgi/wiki/README>
You probably intended [2], isn't it?
Yep, I meant that one. :-)
I wasn't thinking much about multiple repos, but it could be one target. I was just thinking that there was/is one attempt to have a close integration to github API over HTTP in Pharo, and that this effort would have to b partially redone for, say GitLab, or Bitbucket because git does not defines a HTTP API and every hosting company creates one, whereas in Fossil everybody uses the JSON API.
Ohh I understand now. Well is useful in both scenarios, and a showcase of the power of simplicity and being late in the game :-). Cheers, Offray
it means that we could also use the same setup to store pillar books
On 28/02/17 10:56, Thierry Goubier wrote:
2017-02-28 16:43 GMT+01:00 Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com>:
Hi Thierry,
What I'm using is the Fossil JSON API as described in [1]. Managing Grafoscopio documentation with it is pretty easy and yes I believe it could help in bringing >>>a unified API across several repositories (I have not tested that though). [1] http://fossil.wanderinghorse.net/repos/fwiki/index.cgi/wiki/README
You probably intended [2], isn't it?
Yep, I meant that one. :-)
I wasn't thinking much about multiple repos, but it could be one target. I was just thinking that there was/is one attempt to have a close integration to github API >>over HTTP in Pharo, and that this effort would have to b partially redone for, say GitLab, or Bitbucket because git does not defines a HTTP API and every hosting >>company creates one, whereas in Fossil everybody uses the JSON API.
Ohh I understand now. Well is useful in both scenarios, and a showcase of the power of simplicity and being late in the game :-).
Cheers,
Offray
-- Using Opera's mail client: http://www.opera.com/mail/
Hi guys, Quick question regarding sockets and testing. I'm trying to implement a simple communication protocol to exchange data (strings) between 2 images and I was wondering what was the easiest way to test/develop my code? I want to be able to do something similar to a chat client between 2 images where none of those 2 images acts as a server. So data can originate from any of those 2 images and both images have to "listen" to each other. Besides, both images would have to transmit/receive on the same port. 1) Is this possible (the way I want to do/test it)? 2) How do I simulate something like this on a *single* machine running those 2 images? 3) Do I need to have one of those 2 images act as a "server" ? 4) Any helpful tip and/or interesting link to propose? 5) Can you think of any simple code or example I could look at to understand what I need to do?  ----------------- Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Tue, Feb 28, 2017 at 10:09:06AM -0500, Offray Vladimir Luna Cárdenas wrote:
BTW, when installing Grafoscopio you get a FossilRepo object that is used to query Fossil repositories via the JSON API and update documentation. Still in early stages, but I will experiment how Pierce's Fossil support give a more cohesive user experience when working with publication and collaboration of interactive notebooks.
Currently FossilFileTree runs Fossil "at the command line". But certainly talking JSON with a Fossil server is another avenue to explore, similar to having gitfiletree:// and remote git repository. Pierce
2017-02-28 8:12 GMT+01:00 stepharong <stepharong@free.fr>:
This is cool. I'm curious to see if we could manage fossil back-end via iceberg.
It is a nice use case to check on an architecture for Iceberg with multiple back-ends. Thierry
Stef
On Tue, 28 Feb 2017 01:19:50 +0100, Pierce Ng <pierce@samadhiweb.com> wrote:
Hi all,
I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files. At the operating system command prompt, init a new Fossil project: os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff") Open the repository: os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil In a fresh Pharo 6 image - I used v60411 - install FossilFileTree: Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load. Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done. Full blog post here: http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html Pierce
-- Using Opera's mail client: http://www.opera.com/mail/
2017-02-28 1:19 GMT+01:00 Pierce Ng <pierce@samadhiweb.com>:
Hi all,
I have written a simple integration of FileTree with Fossil to avoid the 2-step Pharo- and shell-level work to add/delete/commit files.
At the operating system command prompt, init a new Fossil project:
os% mkdir ~/repo os% cd ~/repo os% fossil init myproject.fossil project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950 server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617 admin-user: laptop-user (initial password is "1fe2ff")
Open the repository:
os% mkdir ~/myproject os% cd ~/myproject os% fossil open ~/repo/myproject.fossil
In a fresh Pharo 6 image - I used v60411 - install FossilFileTree:
Metacello new baseline: 'FossilFileTree'; repository: 'github://PierceNg/FossilFileTree'; load.
Write code in Pharo. Open Monticello Browser. Add a "fossilfiletree" repository, using ~/myproject as the directory. Save to said repository from within Monticello Browser. Done.
Full blog post here:
http://www.samadhiweb.com/blog/2017.02.28.fossil.filetree.html
Pierce
Congratulations! This was one of my objectives with GitFileTree: open up the Pharo infrastructure to other DVCS such as Fossil. How does Fossil handles merging the FileTree format? Regards, Thierry
On Tue, Feb 28, 2017 at 04:23:12PM +0100, Thierry Goubier wrote:
2017-02-28 1:19 GMT+01:00 Pierce Ng <pierce@samadhiweb.com>:
I have written a simple integration of FileTree with Fossil to avoid the Congratulations! This was one of my objectives with GitFileTree: open up the Pharo infrastructure to other DVCS such as Fossil.
And indeed runOSSubprocessFossilCommand is basically runOSSubprocessGitCommand, so thank you for GitFileTree. I've only implemented #basicStoreVersion: and it is simply this: basicStoreVersion: aVersion super basicStoreVersion: aVersion (MCFossil new repoDir: self directory fullName) addRemove; commit: aVersion info message The last 3 lines is of course just the Smalltalk way of saying "fossil addremove; fossil commit ..." Currently that's all it does.
How does Fossil handles merging the FileTree format?
Just to be sure I get your question, do you mean whether FossilFileTree sees the changes if I edit the .st files using vi, say? Right now, after committing in Monticello Browser, when I click 'refresh' or 'changes' everything shows up as new again. That can't be right. Which part of GitFileTree deals that? Pierce
2017-03-01 13:15 GMT+01:00 Pierce Ng <pierce@samadhiweb.com>:
On Tue, Feb 28, 2017 at 04:23:12PM +0100, Thierry Goubier wrote:
2017-02-28 1:19 GMT+01:00 Pierce Ng <pierce@samadhiweb.com>:
I have written a simple integration of FileTree with Fossil to avoid the Congratulations! This was one of my objectives with GitFileTree: open up the Pharo infrastructure to other DVCS such as Fossil.
And indeed runOSSubprocessFossilCommand is basically runOSSubprocessGitCommand, so thank you for GitFileTree.
I've only implemented #basicStoreVersion: and it is simply this:
basicStoreVersion: aVersion super basicStoreVersion: aVersion (MCFossil new repoDir: self directory fullName) addRemove; commit: aVersion info message
The last 3 lines is of course just the Smalltalk way of saying "fossil addremove; fossil commit ..."
Currently that's all it does.
Great!
How does Fossil handles merging the FileTree format?
Just to be sure I get your question, do you mean whether FossilFileTree sees the changes if I edit the .st files using vi, say?
No, it is a bit more in depth. FileTree, by default, will save some metadata with the packages (method timestamps, package version history) and this, with git, creates conflicts when merging (and cherry picking and a few other operations). GitFileTree introduced a variant of the format, called metadata-less, to avoid that and recover the metadata from the git history itself (and convert it to Monticello).
Right now, after committing in Monticello Browser, when I click 'refresh' or 'changes' everything shows up as new again. That can't be right. Which part of GitFileTree deals that?
The all new again is the default FileTree approach. In GitFileTree, it recovers all the versions with git log and rebuild them for the repository browser. It is done starting with MCFileTreeRepository>>#gitVersionsForPackage:, then MCFileTreeGitRepository>>#getVersionsForPackageDirectoryName:, tied with a specific class to register the data for all entries (GitFileTreePackageEntry -> other repositories uses only strings to track all the versions). In there you also see the bridge which converts from git log metatadata to Monticello metadata (MCVersion and ancestry). Side question then: is Iceberg factoring out some of that out of GitFileTree, since it supports/supported the libgit and GitFileTree backends? Factoring out could also be of benefit to Fossil. Regards, Thierry
Pierce
participants (5)
-
Benoit St-Jean -
Offray Vladimir Luna Cárdenas -
Pierce Ng -
stepharong -
Thierry Goubier