Hey, I try to work with tODE again and again and find it very different. Ok, but now again another attempt and here are some questions: -> is there any short introduction to start developing with tODE and git - concerning with Gemstone/S -> how to start a project -> how can I add already defined packages into projects -> how do I define my own git server in tODE -> how to do a commit, a revert and SIMPLE usage of GIT, like one works with svn etc. -> how can I get a browser feeling in tODE You see - only very simple questions :-))) marten _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Administrator
|
If you follow the instructions in GsDevKit_home, such as https://github.com/GsDevKit/GsDevKit_home/blob/master/docs/installation/README.md, each variation ends with "You may immediately start Using tODE." and provides a link (https://github.com/GsDevKit/GsDevKit_home/blob/master/docs/gettingStartedWithTode.md). That URL looks like a good place to start.
|
In reply to this post by GLASS mailing list
On 5/20/16 10:14 AM, Marten Feldtmann
via Glass wrote:
`project new` is the command that will create a new project and git repo for you. To see the man page: man project new Create a project named FooBar: project new FooBar This command creates a BaselineOfFooBar Metacello baseline, creates a git repository at `$GS_HOME/shared/repos/FooBar`, creates a package named FooBar-Core, saves the baseline and package to the git repository and performs a git commit. The `project list` command brings up project browser where you can see the details of the new FooBar project and all other projects loaded into your repository: project list The FooBar project should show up at the top of the `project list` and look like the following: |FooBar| d3ac5a1 [master] filetree://$GS_HOME/shared/repos/FooBar/repository The vertical bars means the project is locked (for more info on the Metacello lock command see [1]). `d3ac5a1` is the SHA of the commit that is loaded into your repository. `[master]` indicates that you are on the master branch of the `filetree://$GS_HOME/shared/repos/FooBar/repository` repository. `man project browse` describes the browsing commands for viewing different aspects of the project: categories, packages, repositories and tests. `project browse --packages FooBar` opens a package list on the packages associated with the project: BaselineOfFooBar (BaselineOfFooBar-dkh.1) FooBar-Core (FooBar-Core-dkh.1) `project browse --categories FooBar` opens a browse on the list of class categories associated with the project. Clicking on a category opens a list of classes in the category and clicking on a class opens a "class browser" on the class. `browse project FooBar` opens a browse on the list of classes defined in the project. `man browse` gives you a list of the various kinds of browsers that you can use. There are a number of menu items on the `project list` that correspond to the `project browse` commands and in general every menu item should have a corresponding tODE command and a Smalltalk API to make it easy to write your own scripts. To create your first class in the FooBar project you can use `cls create FooBar Object FooBar-Core` and the class will be created in the FooBar-Core package. The 'Class > add class' and 'Class > add subclass' menu items can be used to create classes. Also you can edit the class definition window (`cls definition FooBar`) to add instance variables or create new classes or move a class to a different package/category as well. `cls comment Foobar` can be used to view and define the class comment. To add methods you first add method protocol. `cls protocol --add=FooBar accessing private` adds the accessing and private instance side protocols. 'cls protocol --class --add=FooBar `instance creation`' adds class-side protocol. `browse class FooBar` to bring up the "class browser", select a protocol and use the 'new method' menu item to bring up a method template in a source pane. At this point you may be ready to save the changes you've made to the git repository for the project. Refresh the `project list` by using the 'Window > refresh window' menu item and you should see something like the following for the FooBar project: |* FooBar| d3ac5a1 [master] filetree://$GS_HOME/shared/repos/FooBar/repository The `*` indicates that you've made modifications to the project. Use the 'changes' menu item or the `project diff FooBar` command to see the changes that you've made. Use the 'save' menu item or the 'project commit --git --message=`My first commit` FooBar' to save the changed packages and do a git commit. The project list should look something like the following: |FooBar| 6337993 [master] filetree://$GS_HOME/shared/repos/FooBar/repository With no `*` and a new commit SHA. Now would also be a good time to make a backup of your repository using the `bu backup back.dbf`. `bu list` provides a list of the backups you've made and should look like the following: Last Restore: nil Last Backup: 20/05/2016 20:07:00 -- back.dbf.gz Backups: 23/04/2016 06:16:55 -- tode.dbf.gz 20/05/2016 20:07:00 -- back.dbf.gz Snapshots: 23/04/2016 06:17:02 -- extent0.tode.dbf Note that a `.gz` is tacked onto the backup file name and indicates that the backup was gzipped (default). To restore from a backup use `bu restore back.dbf.gz`. Look at `man bu snapshot` to see how to create a snapshot and look at the $GS_HOME/bin/newExtent script for restoring snapshots. [1] https://github.com/dalehenrich/metacello-work/blob/master/docs/LockCommandReference.md#lock-command-reference The exact instructions depend upon you are using a ConfigurationOf or BaselineOf for a project, I'll assume that you are using a BaselineOf like BaselineOfFooBar. For completeness the following commands create a test package in the Foobar repository, add a TestCase class to the test package: mc create FooBar-Tests mr add filetree://$GS_HOME/shared/repos/FooBar/repository FooBar-Tests cls create FooBarTests TestCase FooBar-Tests To add the FooBar-Tests package to the FooBar project, you edit the BaselineOfFooBar>>baseline: method to match the following: baseline: spec <baseline> spec for: #'common' do: [ spec package: 'FooBar-Core'; package: 'FooBar-Tests' with: [ spec requires: 'FooBar-Core' ]; yourself ] ... and the following saves the new package and the modified baseline: project commit --git --message=`add tests` FooBar Not sure what you mean by "git server" ... perhaps I've already answered your question? If not give me a bit more info... I think that the "How to Contribute" doc[7] contains a number of good examples of using git for a number of things ... Most of the things you want to do can also be done from the project list menu: From the bash command line, many of the basic git commands are very similar to the svn commands ... it's worth skimming the following links for getting basic information about using git plus some good docs on getting started with git ... [7] https://github.com/GsDevKit/GsDevKit_home/blob/master/docs/howToContribute.md I think this should be covered earlier Haha, keep the simple questions coming and let me know if something doesn't work as expected ... It's a good idea to use the latest version of tODE. At a minimum: updateGsDevKit -gsi todeLoad <stone-name> Dale _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
I want to show how I work with tODE and how I stopped at several points. First a bug: Creating a new package From the pop-up menu, open "Packages (mc)" and one gets all known packages - adding a new packages results into a StackOverflow error. Hmm. But now to my workflow: Creating a new project There seems to be no way to create a new project using the GUI. One might get the project list using the GUI, but from there: no way to create a new project. STOP Therefore I have to execute "project new <name>" in the tODE shell. If the external git tools has not been configured yet (developer eMail and name) - this fails and errors are shown in the shell. STOP. Ok, I switched to an external shell and execute two git commands (the syntax was printed in the tODE shell in the step earlier) - then at least the infrastructure has been fixed. OK. Now I can create a project named "MSKGrummel" and this worked. My project is shown in the "Projects" window. OK From Project to Packages With the new project I have also a new package named "MSKGrummel-Core" - that's very good. I found this out, when I select "packages" from the pop-up menu and I get a window called "Packages for MSKGrummel". In that I window I looked at the pop-up menu and found "create new package". Hmm, actually not needed in this step to my first class, but I tried it out and was asked for a new package name. Entered it and got a callback Metaclass>stonName. STOP. Looking with Jade into the stone I see the packages there ...but they are not added to the project I select "MSKGrummel-Core" and select "browse" from the menu and get an empty window for "MSKGrummel-Core definitions". Seems to be ok, I have no new classes defined. From Packages to Classes I look up at the pop-up menu: "Class", "Method" entries I would expect here are all there - but all sub-menue entries are greyed ... dead-end reached. STOP. I go to the tODE shell and enter "cls create MyFirstClass Object MSKGrummel-Core` and the first class is defined. Here one point would be really nice: * I do not want to type the whole stuff - If I enter "Ob" I would like to have autocomplection on the shell and if I enter "MSKG" I would also like to have autocompletion - like in a bash. The class appears in "MSKGrummel-Core definitions" - but from that window nothing works - all greyed out - even "browse class". That's very strange. STOP Back to the "Projects" window and from there a "browse classes" is possible. I get a new window "Classes" and there are my classes listed. Select a class and one gets a "pseudo" browser. From Classes to Methods The first error I made here: I expected a "new method" menu item in the right window, where the methods are listed. No way to go here. STOP. One has to go to the "protocol" window and there is a "new method" menu entry. That seems to be ok - on the other hand if I have a protocol selected then I would expect the user interaction on the "method" list window. But now to the point where I failed totally: I entered a method text like: testMe and the system did no accept this. At least here I would give up. But ok, what is the problem ? Well I pressed "^" and then "space" - to get "^" (as here in the browser), but this results into a very different character in the source code browser and you get a compiling error. Solution: one has to enter "^" and again "^" to get the correct "^" in the source code browser. Puuuh. Now I was able to enter and compile source code. I created several methods and then I noticed, that the method-list window does no get updated. Press on the "protocol" entry and you get an update of that list. Some other strange things: change from instance to class or back, select any other class - the source code of the last method stays there. Strange. Summary Above is a pretty simple workflow - Iwrote this eMail while doing the work in tODE. Perhaps I assumed too much from other IDEs and even Smalltalk IDEs - but there were many situations, where the workflow did not work as I would expect (and I even did not reach the git area). For one posting this should be enough. Next I want to work-out how to solve these problems: * How to I get a browser like the "Application Browser" (in VASmalltalk) which shows me (in a Smalltalk browser) the definitions and extensions of a package in a useable way. That's the main point I'm missing in Pharo/Squeak/Jade. * tODE creates a local GIT repository. How can I put/synchronize with an external GIT repository on my local server. This seems to be more a GIT problem - but actually * How can I add already defined classed to a package/project I newly created to swap from pure Monticello packages to git based repository. _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Marten, Thank you very much for your feedback! I appreciate the time it take to go through this process! Comments embedded below. On 5/21/16 3:02 AM, Marten Feldtmann
wrote:
I assume that this is the 'Tools > Packages [mc]' menu? I am not able to get a stack overflow :( I tried this with 3.2.12 and 3.3.0, so perhaps some detail on the version of GemStone that you are using? Plus I am curious as to the versions of the projects that you are using. If you use the 'Window > print window' menu on an open project list, I will get just about all the information I need to reproduce your problem. If the stack overflow is occurring on the server-side, you can bring up a window and use 'Window > print window' on the stack list to provide me with a stack so I can fix this issue. The main thrust of tODE has been to create the basic infrastructure and implement a minimal set of GUI tools. With the idea that the GUI tools will be expanded "on demand". Good point. I think that this is a documentation bug for GsDevKit_home and I've created an issue[1] [1] https://github.com/GsDevKit/GsDevKit_home/issues/117 I was able to reproduce this bug and created a tODE issue for it[2]. Thanks. [2] https://github.com/dalehenrich/tode/issues/259 Ah good point. The 'create new package' menu is the generic create new package operation and does not add the package to the project automatically ... another issue[3] [3] https://github.com/dalehenrich/tode/issues/260 Ah very interesting ... browsing a package is different than browsing loaded package, because you are browsing the definitions in the package and not the artifacts in the image ... and package browsing is a read-only operation and empty packages are not very interesting ... When putting together the description for you yesterday I did notice that the transition from empty packages to classes is not very smooth, so I've submitted an issue[4] [4] https://github.com/dalehenrich/tode/issues/261 There is command completion in the tODE shell but at the moment it is not command/context sensitive. Like the bash shell, the tODE command completion is based on "directory paths" and "filenames in the current directory" ... I agree that it would be very useful to recognize that the command is looking for class names, or method selectors or repository names and provide context sensitive completion[5]. [5] https://github.com/dalehenrich/tode/issues/262 I assume that you are again browsing the package.... Good point[6] [6] https://github.com/dalehenrich/tode/issues/263 Agreed ... Hmmm ... this must be an odd interaction between the Pharo client and your keyboard mappings and /or os ... It would be helpful if I could somehow get the codepoint for the bad "^" character and then perhaps I could map that character to the correct one ... or ??? I am not really familiar with keyboard mappings, but I have seen Richard struggle with keyboard mapping issues --- perhaps together Richard and I can reproduce this problem --- if you get anymore information, please add any additional info to the new issue I've created[7]. [7] https://github.com/dalehenrich/tode/issues/266 Ah, I have deferred automatic updates because I want to come up with a solution that does not cause an inordinate amount of network traffic on updates (the fatal issue for GemTools). I've had a couple of ideas over time that might be able to provide updates without incurring nasty network overhead ... but it is time to get serious about coming up with a solution[8] [8] https://github.com/dalehenrich/tode/issues/264 This is actually a feature ... When you switch "change from instance to class or back, select any other class" the expected behavior is to clear the method pane, correct? But what is the use of that? You just get a big empty pane in the middle of the screen and lose the method that *you were looking at* ... I agree that this is a bit disconcerting and takes a bit of time to get used to, but I find this feature very useful ... With that said, I suppose it wouldn't hurt to add an option to clear the method pane when clicking around in the class browser[9]. If you have comments pro or con, let'sm ake them in the context of the issue[9]. [9] https://github.com/dalehenrich/tode/issues/265 I appreciate your effort and I've tagged all of the issues I've opened as "must have"[10] as a means of prioritizing things --- I expect to address the easier issues immediately while some of the others may take some time ... If there are issues that you deem more important than others please let me know ... [10] https://github.com/dalehenrich/tode/issues?q=is%3Aissue+is%3Aopen+label%3A%22must+have%22 I'm not familiar with the "Application Browser" could you point me at documentation or otherwise describe in a bit more detail what features are missing - Perhaps open a new issue[11] against tODE with this information? I'm very interested in adding new and useful tools to tODE... [11] https://github.com/dalehenrich/tode/issues/new take a look at the `git remote` command ... it allows you to assign a name to each external git repo and then you can use fetch, push, merge, etc.to/from this external repo All that you need to do is to copy the package from the mcz repository into a filetree repository on your git repository. From the tODE command line you would do something like the following: mc copy FooBar-Core-dkh.2 http://seaside.gemtalksystems.com/ss/FooBar filetree://$GS_HOME/shared/repos/FooBar/repository or from the GUI: - use `mr list` to open a window on the repositories in you image - select the source monitcello repository ( http://seaside.gemtalksystems.com/ss/FooBar) - use the 'packages' menu item to open a window on the packages in the repository - select the package that you want to copy (FooBar-Core) in the packages window to open a versions window - select the package version that you want to copy (FooBar-Core-dkh.2) and then use the `copy to repository' menu item to select the target repo (filetree://$GS_HOME/shared/repos/FooBar/repository) Dale _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
From "tools>Packages [mc]" I got a window named "Working copies (2)" and from there I select "create new packages" and enter a named and I get an AlmostOutOfStack error in IdentityDictionary>>at:ifAbsent: within a process where STON091Writer tries to write stuff (whatever that may be - here I use Gemstone/S 3.2.14) I assume that this is the 'Tools > Packages [mc]' menu? I am not able to get a stack overflow :( _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
I get a DoubleByteString with the following UTF8 codes: [ 32 204 130 ] or as bytes [ 0 32 3 2 ] and a size of 2 (two characters). Marten Hmmm ... this must be an odd interaction between the Pharo client and your keyboard mappings and /or os ... It would be helpful if I could somehow get the codepoint for the bad "^" character and then perhaps I could map that character to the correct one ... or ??? I am not really familiar with keyboard mappings, but I have seen Richard struggle with keyboard mapping issues --- perhaps together Richard and I can reproduce this problem --- if you get anymore information, please add any additional info to the new issue I've created[7]. _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Ok, but then there should be no menu - suggesting me, that it must be somehow possible to enable that. Ah very interesting ... browsing a package is different than browsing loaded package, because you are browsing the definitions in the package and not the artifacts in the image ... and package browsing is a read-only operation and empty packages are not very interesting ... _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Yes, the idea is good - and this would be a feature I would like to see in any other Smalltalkbrowser: I have a pane with source code and want to see this source code but browser further on in the system: I rather would like to press on a button of that pane and a copy of that pane is opened (somewhere in that browser) with the source code included (or the environment (Class, instance side, protocol, method name). At this point one simulates (more or less good by the way) a standard class browser - but the behaviour is not that of a class browser. What about resizing that simulated browser ... it consists out of six different windows ... Marten
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
The Application Browser in VASmalltalk is a class browser, which shows ALL content of an application (here: package): * it shows all defined classes and extended classes * it shows the class hierarchy * it shows all protocols * in the extended classes it shows the methods defined here * whatever you do in that application browser - you store it in the application (package) shown by the browser. * defined objects are black - other stuff is grayed out. That's the most important browser I miss in Jade and in all other Smalltalks. I have my base model defined in one package and all the logic goes into extension methods of my domain classes and are stored in a different package. Marten I'm not familiar with the "Application Browser" could you point me at documentation or otherwise describe in a bit more detail what features are missing - Perhaps open a new issue[11] against tODE with this information? I'm very interested in adding new and useful tools to tODE... _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Okay recorded that info in issue[1] ... is this particular character
meaningful in German (presuming you are using a German keyboard)? Dale [1] https://github.com/dalehenrich/tode/issues/266#issuecomment-220794749 On 5/21/16 9:09 AM, Marten Feldtmann wrote: > I get a DoubleByteString with the following UTF8 codes: [ 32 204 130 ] > or as bytes [ 0 32 3 2 ] and a size of 2 (two characters). _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Good point opened an issue on thies[1]
[1] https://github.com/dalehenrich/tode/issues/267 On 5/21/16 9:11 AM, Marten Feldtmann
wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
On 5/21/16 9:19 AM, Marten Feldtmann
wrote:
This is possible in tODE already. The 'Window > clone window' menu item (available on every tODE window) creates an independent copy of the window that retains its original context. If you clone a method pane, you can move the method to a different part of the screen and continue using the "class browser" to look at other classes and methods. If you want to browse the class of the cloned method, use the 'Browse > browse my class' menu item and the "class browser" will switch to the class of the method. There are times when I will clone the method list window so that I can easily navigate between different methods in a class while still being able to switch classes being browsed by the "class browser". It's also worth mentioning the 'Window > history' menu item (available for all tODE windows) which allows you to view the previous contents of a particular window --- kinda like the back button in a web browser ... at times this can be convenient as well ... This is a feature that I have contemplated at various times ... frankly I have been waiting for feedback along these lines as i don't want to get too far ahead of my users with potentially esoteric features :) ... There are several different routes I could take with implementing such a feature and I haven't quite settled on the approach I ant to take ... When you are desiring to resize all six windows what are you trying to achieve? - clone the whole browser so that you can have more than one "class browser"? - "permanently" change the relative size/position of the "class browser" for screen real estate issues?
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Its a COMBINING CIRCUMFLEX ACCENT and the correct code would be CIRCUMFLEX ACCENT (94) - no idea, what this means. Its the same with Pharo 5.0 - no idea what is special to my machine Marten
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Okay this makes sense and it should be relatively straight forward -
I've submitted an issue[1]. I'm going to go after the bugs first, but I've been thinking that something like the Application Browser would be useful, so I may take a crack at this in relatively short order ... Dale [1] https://github.com/dalehenrich/tode/issues/268 On 5/21/16 9:26 AM, Marten Feldtmann wrote: > > The Application Browser in VASmalltalk is a class browser, which shows > ALL content of an application (here: package): > > * it shows all defined classes and extended classes > > * it shows the class hierarchy > > * it shows all protocols > > * in the extended classes it shows the methods defined here > > * whatever you do in that application browser - you store it in the > application (package) shown by the browser. > > * defined objects are black - other stuff is grayed out. > > That's the most important browser I miss in Jade and in all other > Smalltalks. I have my base model defined in one package and all the > logic goes into extension methods of my domain classes and are stored > in a different package. > _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
Hmmm ... I'n still not able to reproduce the problem, but it
sounds like it is probably related to the the MNU associated with
the 'create new packages' issue[1], so perhaps you can retest once
I've fixed the bug? Dale [1] https://github.com/dalehenrich/tode/issues/259 On 5/21/16 9:03 AM, Marten Feldtmann
wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
In reply to this post by GLASS mailing list
No, that is not what I wanted. I do not want to copy already defined packages to the repository. I wanted to move the *content* of already defined packages to the newly created "core" package of that repository - to get rid of my old package structure and follow the new one created by tODE. Marten All that you need to do is to copy the package from the mcz repository into a filetree repository on your git repository. From the tODE command line you would do something like the following: _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Ah ... something like a package rename? or are you thinking that you will want to merge several packages together as well? I don't have a package rename command implemented, but I think that it is a long overdue feature ... for some reason the original Monticello implementation did not include package renaming .... Anyway, I've opened an issue to add this command ... I plan to dribble out bugfixes over several weeks as I need to keep several other balls in the air while I work thorough these bugfixes/new features :) Dale [1] https://github.com/dalehenrich/tode/issues/269 On 5/22/16 2:23 AM, Marten Feldtmann
wrote:
_______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Administrator
|
In reply to this post by GLASS mailing list
Marten, I've added some discussion to Issue 266. Please track that and respond.
|
Free forum by Nabble | Edit this page |