Aaand, I've updated

https://github.com/pharo-project/pharo/wiki/Contribute-a-fix-to-Pharo

On Thu, May 24, 2018 at 11:34 AM, Guillermo Polito <
guillermopol...@gmail.com> wrote:

> https://github.com/pharo-vcs/iceberg/wiki/The-Working-Copy(ies)
> https://github.com/pharo-vcs/iceberg/wiki/Branching-and-Merging
>
> On Thu, May 24, 2018 at 11:30 AM, Guillermo Polito <
> guillermopol...@gmail.com> wrote:
>
>> Hi,
>>
>> I'll take some minutes to provide an answer as detailed as possible to
>> all questions in this mail, and to the ones in the mails before.
>> But first, since I know most people only read the first lines of mails
>> :P, if you find any concrete iceberg issues, please report them in
>>
>> https://github.com/pharo-vcs/iceberg/issues
>>
>> Now, answers inline.
>>
>> On Tue, May 22, 2018 at 5:15 PM, Tim Mackinnon <tim@testit.works> wrote:
>>
>>> Hi - last night we managed to explore the new contribution process as
>>> well as the new iceberg ui at the U.K. Smalltalk meetup last night.
>>>
>>
>> Cool!
>>
>>
>>>
>>> Not many had seen it before so it was a good test run.
>>>
>>> As an initial comment - we need to invest a small amount of time to get
>>> the right docs in places you expect them as not doing so undoes a lot of
>>> good work -  the Pharo main site that points to old contribution docs (and
>>> doesn’t reference the new ones) must be updated ASAP to keep energy high
>>> (we almost lost a few folks last night by going down the wrong path -
>>> fortunately Cyril piped up on Discord for me - phew).
>>>
>>
>> I know. This is indeed important. I'm trying to get time to make videos,
>> paste as much info in the wiki. Now, it would be good to know what was
>> exactly your "wrong path". The more concrete you are, the easier is to fix
>> it :).
>> I see Pharo contribution page (http://pharo.org/contribute-propose-fix)
>> points to https://github.com/pharo-project/pharo/wiki/Contribute-a-
>> fix-to-Pharo which is outdated. I'll fix it ASAP.
>>
>>
>>>
>>> Armed with the right steps it was straightforward - much easier than the
>>> older slices mechanism (that I never was comfortable with) - so HUGE thanks
>>> for that everyone!
>>>
>>> As we worked through it, the more git seasoned folks were confused why
>>> git status in a terminal wasn’t really showing the same info as iceberg
>>> (I’ll put this in a separate thread to discuss, as it’s an interesting
>>> thought which I’m sure has lively discussion).
>>>
>>
>> Well, this is the discussion in the other thread. If you have read the
>> glosssary (https://github.com/pharo-vcs/iceberg/wiki/Iceberg-glossary),
>> you will notice that iceberg presents you with two working copies:
>>   - the image working copy
>>   - the disk working copy
>>
>> The disk working copy is what most people know when they use git. The
>> directory where you have your repository, with the files you're modifying.
>>
>> The image working copy represent what is loaded in Pharo. It's important
>> to differentiate them because if I send you an image (or you download it
>> from somewhere) you have code loaded on it. This working copy allows us to
>> track how and where you loaded that code from. That is useful if later on
>> you want to contribute to that project in some way.
>>
>> Then there are other questions:
>>
>> !! Why do we still have a disk working copy?
>>
>> Well, this is not really necessary for iceberg to work. Iceberg could
>> just write source code directly on git's BLOB, as Thierry mentioned in the
>> other thread.
>> The reason for this working copy to be there is just to try to be less
>> alien.
>> Having the disk working copy allows people to still have a way to:
>>   - edit non-smalltalk files from the command like
>>   - use the non command line as a last ressource if something goes wrong
>> with your Pharo image
>>   - use external tools to manage the repository (sourcetree, git kraken,
>> whatever you're confortable with)
>>
>> The idea is that Iceberg will try to keep your disk working copy in sync
>> with your repository HEAD.
>> It will take care of transparently synchronizing your disk working copy
>> when:
>>  - you commit
>>  - you change branches
>>  - you pull/push/merge
>>
>> !! Why don't we dump code into the disk as we write it?
>>
>> The main reason behind it is that the image is not causally connected to
>> the directory in disk, as Ben implied.
>> There is not a 1 to 1 correspondence between what you could ever have in
>> disk and your running image.
>> As Ben mentionned, for this to happen:
>>  - changing the source code in disk should get automatically loaded into
>> Pharo
>>  - changing the source code in Pharo should get automatically written in
>> disk
>>
>> The thing is that this is much more difficult than it sounds:
>>  - What happens if you do not want to save your image, you forgot to save
>> it or it crashes? Suddenly you will have an image that is not in sync with
>> your repository. Would you load all changes into your image as soon as you
>> reopen it? Atomically?
>>  - What happens if you share your repository between several images?
>>  - Or if suddenly you change your branch from the command line to
>> something completely different?
>>
>> Several of these usecases don't even make sense. So we preferred to
>> choose the path of "make it explicit".
>> Of course, we could do better, we are open to discuss any improvements.
>> Just take into account that Iceberg did not come from an egg :) we have
>> thought about many possible scenarios and discussed with a lot of people
>> before.
>>
>> !! How does merge work?
>>
>> First, just for the record, merge works. We even
>>  - detect fast forward merge avoiding the creation of extra merge commits
>>  - proposing a single UI to resolve all conflicts of a project at once
>> and not one per package
>>
>> Now, as Thierry suggested in the other thread, Iceberg's merge happen in
>> memory. The reason behind this is that using Git's default merge mechanism
>> would insert the >>>> <<<< markers in the conflicting files. This would
>> break our parsers and all our tools.
>> Instead, we ask git for the list of conflicting files, and we build a
>> diff tree in memory, that we later augment with information such as
>> conflicts.
>>
>> There are some issues we have seen when merging external files, but as
>> soon as the two merged commits are not merging external files, but we hope
>> we will fix them soon.
>>
>> Missing feature: right now we can only choose between incoming or loaded
>> version during a merge. It would be nice to be able to edit a method's
>> code, picking part of the incoming code and part of the current code.
>>
>> Missing feature 2: right now we resolve all conflicts in memory and
>> commit them at once. We know some people would like to, instead, not do the
>> merge automatically, so they can test it before committing. This should not
>> be tooo difficult to do but it was down in the priority list :).
>>
>> !! Exporting without commiting?
>>
>> There is no UI support for this, but it is doable from the backend,
>> though not correctly exposed right now.
>>
>> You can right-click on the repository -> Extras -> Inspect
>>
>> repository index updateDiskWorkingCopy: repository workingCopy
>> workingCopyDiff.
>>
>>
>>> Anyway - the new UI does take some getting used to (personally I liked
>>> the compactness of the original Iceberg and its tabs), but when you
>>> understand what the different windows show you - I think it makes sense
>>> (and hopefully is more stable).
>>
>>
>> Well, the UI rewriting has several ideas behind. I'll put whichever ones
>> come to my mind in here, I hope Esteban will correct me if I'm wrong:
>>
>>  - Moving from Glamour to Spec. This is a purely technical decision.
>> AFAIK, maybe I'm wrong, Glamour is not being maintained anymore by the GT
>> team, and it has some rough corners that made the old UI difficult to deal
>> with sometimes. From an investment of time standpoint, we decided to put
>> effort in Spec instead...
>>  - Simplify the UI. We needed it to be less overwhelming and sometimes
>> more direct. That's the why of the toolbar on the top, and the more (but
>> smaller and simpler) windows.
>>
>> Regarding the design, Esteban followed some UI guidelines for the design
>> taken from I don't where. But at the end we are engineers, not UI
>> designers, so we make ugly UIs by default :P.
>> Any improvement or concrete suggestion on this direction is welcome :).
>>
>>
>>> We all missed having an obvious Diff mechanism - we later spotted that
>>> Commit does show this (Although possibly calling it “Commit…” might make it
>>> more obvious that you have a chance to review changes and change your mind)
>>> - but knowing the size of your change and reviewing them without any danger
>>> of committing something is a useful feature (but maybe a 2.0 enhancement
>>> request?).
>>>
>>
>> Yes, I want that also. I miss
>> - a Diff/See Changes button.
>> - that the tabs that show the diffs should maybe say "Diff: XXX to YYY"
>> instead of just "XXX to YYY"
>>
>> Could you open an issue?
>>
>>
>>>
>>> One small tweak (which I would PR if I knew how to - would be to swap
>>> the status and branch columns in the Repository window  to make the status
>>> clearer (the status gets lost as it sqashed against the normally much
>>> longer branch name).  Its a simple change to #initializeRepositoryList but
>>> I guess Iceberg is in a different repository (and not in the instructions
>>> for contirbutions).
>>>
>>
>> Could you open an issue?
>>
>>
>>>
>>> We also noticed that if you try to use the “Create Pull Request” menu
>>> item, you can’t if you have 2FA enabled on Github (the recommended setting)
>>> as I guess that ssh protocol doesn’t allow this with an ssh key? So I we
>>> should update the instructions to suggest either using the web ui - or -
>>> creating an app specific login (that doesn’t use 2fa). - I’ll look at how
>>> to add that tweak and send a PR.
>>>
>>
>> Ouki :)
>>
>> Thanks!
>>
>>
>>>
>>>
>>> Tim
>>>
>>>
>>> Sent from my iPhone
>>>
>>
>>
>>
>> --
>>
>>
>>
>> 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
>



-- 



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

Reply via email to