Ooooh - I didn’t know about #addToIndex: that sounds like a possible workaround to my problem (but not a generic solution though).
BTW - I don’t want this to be a criticism, I’m loving the tools and their possibilities! Tim Sent from my iPhone > On 14 Jun 2018, at 09:36, Peter Uhnák <i.uh...@gmail.com> wrote: > > Wait... so it is no longer possible to #addtoIndex: external files from > Pharo? I thought that this functionality was supposed to be preserved. > > Peter > >> On Thu, Jun 14, 2018 at 10:30 AM, Tim Mackinnon <tim@testit.works> wrote: >> Hi - yes I’m pleased you check out the entire tree, although currently it’s >> a bit confusing that you do (fortunately this does give the possibility that >> we can checkout images and other resources that an Pharo application might >> rely on - without having to resort to the Seaside FileLibrary trick). >> >> However my concrete case was that I have a gitlab ci pipeline and next to my >> src directory in my project I have a config directory that has some Nginx >> config for my teapot app. If I add a teapot route, I also need to adjust >> that config and check both changes in together. I can’t easily do that now? >> >> I can modify /config/app.nginx either in another app (intellij) or even in >> the simple Pharo text editor, and the I can add my new route in my >> DemoApp>>createRoutes method but how do I check them in together so my >> pipeline will build atomically? >> >> Iceberg hasn’t written out the changes yet, so IntelliJ can’t see them to do >> a commit, and iceberg ignores the parallel /config directory (that it >> checked out). So it’s a catch 22. >> >> This is why I suggested maybe we could specify safer (textual) directories >> that iceberg might also checkin? OR we have a Stage command in iceberg that >> does everything that commit does up to the point of actually writing to the >> repo - then I could jump to IntelliJ and do the final commit there and use >> its tools to manage non Pharo stuff (until we can build more)? >> >> Does this make sense? >> >> As an aside - I’d really like to checkin in the play-xxx directories (the >> .ph files) as there is often useful playground stuff I’d like to access on >> my home computer. We can’t do that easily at the moment either. >> >> Tim >> >> Sent from my iPhone >> >>> On 14 Jun 2018, at 09:12, Guillermo Polito <guillermopol...@gmail.com> >>> wrote: >>> >>> Just to complement Esteban's answer: >>> >>> - Iceberg checks out in disk more than the src directory because you >>> **may** want to edit files from the command line, and after long >>> discussions we did not want to forbid that. >>> Actually, just to put everybody in perspective, at first the idea was to >>> not have a working copy in disk at all, but just hit to the blob. >>> Imagine is nowadays we are a bit alien, that would have been worst :) >>> >>> - About checking in files. I'd like to understand what you mean exactly. >>> - Do you want to load them into memory? >>> This would be the "more consistent" way to do it, following the "the >>> image it its own working copy" metaphore. >>> This would allow us to, for example, share an image and transparently >>> share resources with it (without requiring to clone). >>> But this would have some impact in memory consumption and add stress to >>> the GC, right? >>> >>> - Or do you mean to ask like any other Git client and show you the file >>> differences between the working copy and the git index? >>> The problem with this approach is that we will have some treatment for >>> pharo code and some different treatment for non-code... >>> If I do a change to a class, the change is kept in the image. But if I >>> do a change to a file, that change is not kept in the image! >>> >>> Also, as Esteban says, having an IDE with support for files would mean that >>> we would need good tools to edit in-memory files (not only text files, >>> right? but also any kind of binary file...) >>> >>> So far we cover the bare minimum that allows us to *not lose* changes :) >>> >>>> On Wed, Jun 13, 2018 at 11:07 PM Tim Mackinnon <tim@testit.works> wrote: >>>> >>>> > yeah… but is a lot of work and no time just right now. >>>> > long term, it would be cool to manage everything from iceberg. >>>> > but reality check, is a huge amount of work so it has to come step by >>>> > step. >>>> >>>> Fair enough - its pretty cool we’ve got this far, and I guess the onus is >>>> on the rest of us to learn more about how its done and see if we can >>>> contribute more somehow. I really appreciate the love you’ve already put >>>> into this - it works far better than I think we even realised it could. >>>> >>>> Tim >>>> >>>> >>>> >>>> > On 13 Jun 2018, at 21:55, Esteban Lorenzano <esteba...@gmail.com> wrote: >>>> > >>>> > >>>> > >>>> >> On 13 Jun 2018, at 22:44, Tim Mackinnon <tim@testit.works> wrote: >>>> >> >>>> >> Esteban - so I don't then understand why iceberg (usefully in my view) >>>> >> checks out more than the src directory, if it’s only focusing on the >>>> >> Pharo blob? >>>> >> >>>> >> I’m guessing that by knowing where the src is, you are just committing >>>> >> that part of the tree with libgit? >>>> >> >>>> >> Perhaps from a pragmatic first step you might consider letting us add a >>>> >> second safe resources directory that you could check in atomically as >>>> >> well (on the understanding all bets are off if it goes wrong?) >>>> >> >>>> >> OR could we have a check in mode does all the add/remove operations and >>>> >> writes to disk but then let’s you drop to the command line/other tool >>>> >> to add any other files and do the final commit? >>>> >> >>>> >> I just feel like you/we are so close to something that works a bit more >>>> >> broadly and embrace the wider world.? >>>> > >>>> > yeah… but is a lot of work and no time just right now. >>>> > long term, it would be cool to manage everything from iceberg. >>>> > but reality check, is a huge amount of work so it has to come step by >>>> > step. >>>> > >>>> >> >>>> >> Tim >>>> >> >>>> >> Sent from my iPhone >>>> >> >>>> >>> On 13 Jun 2018, at 21:28, Esteban Lorenzano <esteba...@gmail.com> >>>> >>> wrote: >>>> >>> >>>> >>> hi, >>>> >>> >>>> >>> >>>> >>>> On 13 Jun 2018, at 16:50, Tim Mackinnon <tim@testit.works> wrote: >>>> >>>> >>>> >>>> Hi - my second attempt at using Pharo with Git has proven very >>>> >>>> satisfying (I saw the potential in phase 1, but it was often >>>> >>>> difficult to understand what was happening and the workflow to use). >>>> >>>> >>>> >>>> One thing that has come up a few times for me however - and its >>>> >>>> something that using git nicely highlights, there are many >>>> >>>> non-smalltalk assets in my project that don’t need to live in the >>>> >>>> image (like Seaside FileLibraries were trying to do) but do need to >>>> >>>> be versioned and be part of my project. Common examples are server >>>> >>>> config files, images and even the playground history files that are >>>> >>>> useful to pull up when on another computer. >>>> >>>> >>>> >>>> It seems that while Iceberg does check out a full project, if I >>>> >>>> change any of the files outside of the src directory (like edit a >>>> >>>> .txt file using the crude Pharo file editor), those changes don’t get >>>> >>>> committed when I do a checkin? Is this on purpose? It makes the >>>> >>>> workflow a bit trickier to do an atomic commit of a piece of work - >>>> >>>> and I’m not clear whether this is a conscious thing, or an MVP thing >>>> >>>> (and it will come later). >>>> >>> >>>> >>> workflow is tricker because you are expecting iceberg to talk with the >>>> >>> local working copy and to handle that WC. >>>> >>> what happens in fact is different: iceberg treats the image as a >>>> >>> working copy itself (it has its own “stage” area) and what you have in >>>> >>> disk is like a separated WC. >>>> >>> >>>> >>> at least, this is the metaphor we are using now, because we cannot >>>> >>> realistically handle/control what is in disk since it can be anything. >>>> >>> So, instead having this picture in mind: >>>> >>> >>>> >>> Image -> Disk -> Git blob (database) >>>> >>> >>>> >>> you need to have this other: >>>> >>> >>>> >>> Image \ >>>> >>> Git blob (database) >>>> >>> Disk / >>>> >>> >>>> >>> >>>> >>> you will see as soon as you change the mental image, your problems are >>>> >>> gone ;) >>>> >>> >>>> >>> cheers! >>>> >>> Esteban >>>> >>> >>>> >>> ps: diagram before is not exactly as it is since the image actually >>>> >>> writes into disk first, but this is an implementation detail we would >>>> >>> like to remove in the future, even. >>>> >>> >>>> >>>> >>>> >>>> As mentioned above, I was also thinking it would be nice if I could >>>> >>>> checkin some of the play-xxxx/*.sh files to essentially keep some of >>>> >>>> that history synced between environments (or team members?). >>>> >>>> >>>> >>>> It strikes me that this is the kind of thing that git integration >>>> >>>> should bring to us? >>>> >>>> >>>> >>>> I can overlay my copy of IntelliJ on top of my local iceberg >>>> >>>> directory and then use it for checkins - but then I still have the >>>> >>>> atomic problem, as its only when I commit that tonel files are >>>> >>>> written out onto the file system for me to checkin along with any >>>> >>>> other assets I’ve changed. Does anyone else have a good workflow for >>>> >>>> this? What do you guys do? >>>> >>>> >>>> >>>> Tim >>>> >>> >>>> >>> >>>> >> >>>> >> >>>> > >>>> > >>>> >>>> >>> >>> >>> -- >>> >>> Guille Polito >>> Research Engineer >>> Centre de Recherche en Informatique, Signal et Automatique de Lille >>> CRIStAL - UMR 9189 >>> French National Center for Scientific Research - http://www.cnrs.fr >>> >>> Web: http://guillep.github.io >>> Phone: +33 06 52 70 66 13 >