addFileToIndex: and addFilesToIndex: are still there... We of course have support for changing and committing arbitrary files (actually, pharo code at the end are just arbitrary files!). The difficult part is to bring a consistent UI to life for it...
On Thu, Jun 14, 2018 at 10:43 AM Tim Mackinnon <tim@testit.works> wrote: > 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 >> <http://www.cnrs.fr>* >> >> >> *Web:* *http://guillep.github.io* <http://guillep.github.io> >> >> *Phone: *+33 06 52 70 66 13 >> >> > -- 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 <http://www.cnrs.fr>* *Web:* *http://guillep.github.io* <http://guillep.github.io> *Phone: *+33 06 52 70 66 13