Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.
 Entire forum ➜ MUSHclient ➜ General ➜ MUSHclient source being made available on GitHub

MUSHclient source being made available on GitHub

It is now over 60 days since the last post. This thread is closed.     Refresh page


Pages: 1 2  3  

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Thu 21 Jan 2010 03:42 AM (UTC)

Amended on Sun 24 Jan 2010 03:07 AM (UTC) by Nick Gammon

Message

Following on from comments before about a better method being needed for the MUSHclient source, and to eventually save me time and effort, I am migrating it to Git. You can see the preliminary results here for version 4.45:

http://github.com/nickgammon/mushclient (or easier to remember maybe): http://mushclient.com/git

Various things have been reorganized compared to the earlier source distributions, to make it a bit more modular.

When I think it is complete, I will tag it, however you do that, as v4.45.

Information about using Git: Git Magic

You can read about Git, and find where to download the Git client from: git - the fast version control system


- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #1 on Thu 21 Jan 2010 06:39 AM (UTC)
Message
With bzr, you would "tag it" as a given version by creating a branch and calling that branch whatever you wanted. I presume that git has a similar mechanism.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #2 on Thu 21 Jan 2010 07:18 AM (UTC)
Message
Can you tag the head? That is, if what is there is version 4.45, can I just tag it? Then start adding in changes?

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #3 on Thu 21 Jan 2010 09:00 AM (UTC)

Amended on Thu 21 Jan 2010 09:01 AM (UTC) by Nick Gammon

Message
OK, things are more or less ready now. ;)

In order to make the git repository look reasonable (ie. unlike the way I normally work <grin>) I have tidied things up a bit ...


  • Files that didn't seem relevant to compiling or installing were removed

  • A whole lot of files were moved to subdirectories, to make the main top-level directory less cluttered. For example, scripting, xml, mxp, dialogs and more, are all now in their own subdirectories.

  • To reflect these changes, various modifications were made to the source (eg., changing #include directives)

  • The source distribution does not include major libraries not written by me, in particular:


    • pcre
    • png
    • sqlite
    • zlib


    Instead, a readme.txt file has been placed in the appropriate directories indicating how you might obtain those libraries, and make minor amendments to get them to compile OK.

  • The installer file (mushclient.nsi) was modified to point to the relevant new directories, where applicable.


The resulting source *should*, if downloaded and compiled, yield version 4.45 of MUSHclient. However because of the changes mentioned (eg. to include paths etc.) it is not literally the source used to compile the released version 4.45.

The resulting "head" has been "tagged" as v4.45, indicating that if you retrieved the files "as at v4.45" (and don't ask me how to do that just yet) you should get the version 4.45 source.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #4 on Thu 21 Jan 2010 09:07 AM (UTC)
Message
If you have git installed, this command should pull in a copy of the current MUSHclient source:


git clone git://github.com/nickgammon/mushclient.git


- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Twisol   USA  (2,257 posts)  Bio
Date Reply #5 on Thu 21 Jan 2010 07:51 PM (UTC)
Message
*drool* Thank you so much, Nick, this is awesome!

As for tagging stable releases, an approach I'm considering for my own projects is having two branches: 'stable' and 'development'. Work is done in 'development', and when a new version is ready for release, you just switch to the stable branch and merge in development, then add a tag like 'v4.45' for easy access. It gives the stable branch a tidy history of stable releases, and if you want to see more in-depth development history, you can look at the development branch.


David: From what I've read, git tags are basically just nonmoving branch heads, which sounds pretty much exactly the same as the bzr mechanism as you described it.

'Soludra' on Achaea

Blog: http://jonathan.com/
GitHub: http://github.com/Twisol
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #6 on Thu 21 Jan 2010 08:16 PM (UTC)
Message
The nice thing about the bzr method of using branches to "tag" releases -- and I don't know if the git "nonmoving branch heads" do the same but I would presume they do -- is that each release can have its own directory and branch, as separate from the main development and stable branch. You can then merge changes from arbitrary branches into arbitrary other branches. (They have smart storage implementation to not duplicate information unnecessarily in the VCS database.)
So what you would do is similar to what you described, except that instead of (or in addition to, as your needs vary) tagging the stable as 4.45, you would branch it off.

This is more helpful when you need to apply maintenance patches to old versions, but MUSHclient's development doesn't really work that way. Old versions become obsolete as new versions come out, unlike some projects where version X is still supported when version X+1 comes out.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Twisol   USA  (2,257 posts)  Bio
Date Reply #7 on Thu 21 Jan 2010 08:32 PM (UTC)

Amended on Thu 21 Jan 2010 08:33 PM (UTC) by Twisol

Message
To do a maintanence patch as you describe, you'd simply checkout the tagged version you want to patch, then commit a new patch and re-tag it. It would create a new branch off of the original release, and the later versions' histories wouldn't be affected. This could be a good or bad thing depending on how you look at it, but I doubt bzr works much different.y

'Soludra' on Achaea

Blog: http://jonathan.com/
GitHub: http://github.com/Twisol
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #8 on Thu 21 Jan 2010 08:34 PM (UTC)
Message
OK, still trying to work out how to use git.

Assuming you have used "clone" to make a copy of the source, you can do this to update to the latest version:

First, cd to the directory you cloned above (ie. 'mushclient' wherever you put it). Then


git pull


This should update your copy to match the one at github.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #9 on Thu 21 Jan 2010 08:41 PM (UTC)
Message
Now if you want to find exactly what version 4.45 had in it you can (from the mushclient directory) type:


git checkout -b v4.45


This creates a branch (locally) such that your working directory now has the files as at version 4.45.

You can switch back to the master version like this:


git checkout master


- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #10 on Thu 21 Jan 2010 08:47 PM (UTC)

Amended on Thu 21 Jan 2010 08:49 PM (UTC) by Nick Gammon

Message
To see what changes I have been making you can go to the mushclient project at GitHub:

http://github.com/nickgammon/mushclient

Near the top of the page (at present) I see a box like this:


Updated version number to 4.46 

commit  218d75b45ed72085d7ea41236378d098b8d8e5ab
tree    66c7d35b20e29c9876ea2d1f790ad1551f8d76db
parent  248df7579b22bbb444453d47529d03b169e5bef2

nickgammon (author)
4 minutes ago


Now if you click on the "commit" link (the hex stuff in bold) then it opens a new page, somewhat like the following box.

Inside that (in a nice colour presentation) is a listing of everything in that commit:


MUSHclient.rc       8  ••••
doc.h               8 ••••
install/readme.txt  2 ••

MUSHclient.rc

- FILEVERSION 4,0,45,0
- PRODUCTVERSION 4,0,45,0
+ FILEVERSION 4,0,46,0
+ PRODUCTVERSION 4,0,46,0


It looks a lot better than that, but basically it shows that the version number got changed.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #11 on Thu 21 Jan 2010 10:50 PM (UTC)
Message
If you have a local version checked-out (eg. with the "clone" command) then you can see what differences have been made in files since the last version, like this:


git diff v4.45 -- lua/wait.lua


The two dashes are necessary to separate the commit tag (v4.45 in this case) from the file name(s).

Apparently, and I haven't tried this yet, you can compare between any versions like this:


git diff v4.45 v4.47 -- lua/wait.lua


- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #12 on Fri 22 Jan 2010 12:08 AM (UTC)
Message
Here's another useful trick. Once you have got the latest version you can see what files changed since a previous version, like this:


C:\source\mushclient> git diff v4.45 --stat

 .gitignore                     |    4 +
 MUSHclient.rc                  |    8 +-
 OtherTypes.h                   |   27 +-
 TextDocument.cpp               |    6 +-
 dialogs/plugins/PluginsDlg.cpp |   32 +-
 doc.cpp                        |   69 +++-
 doc.h                          |   11 +-
 install/mushclient.nsi         |    2 +
 install/readme.txt             |    2 +-
 lua/ppi.lua                    |  170 ++++++
 lua/wait.lua                   |   33 +-
 miniwindow.cpp                 |   40 ++-
 mushview.cpp                   | 1207 +++++++++++++++++++++-------------------
 mushview.h                     |    6 +-
 readme.txt                     |    1 +
 scripting/functionlist.cpp     |    1 +
 scripting/methods.cpp          |   39 +-
 worldsock.cpp                  |    2 -
 18 files changed, 1035 insertions(+), 625 deletions(-)


You can immediately see from this which files have changed at all, and then what the changes were by looking at individual files. For example, the install/readme.txt file:


C:\source\mushclient> git diff v4.45 install/readme.txt

diff --git a/install/readme.txt b/install/readme.txt
index 20afae1..bfc060b 100644
--- a/install/readme.txt
+++ b/install/readme.txt
@@ -1,4 +1,4 @@
-MUSHclient version 4.45
+MUSHclient version 4.46
 =======================

 Thursday, 24th December, 2009


So we can see from that, that the only thing that changed was the version number.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Twisol   USA  (2,257 posts)  Bio
Date Reply #13 on Fri 22 Jan 2010 02:10 AM (UTC)
Message
On the announce post, you could use a direct link to the tag instead of directing them to the tags tab:

http://github.com/nickgammon/mushclient/tree/v4.46

As it happens, all tagged revisions are automatically made available for direct download from the Downloads page as well:

http://github.com/nickgammon/mushclient/downloads

'Soludra' on Achaea

Blog: http://jonathan.com/
GitHub: http://github.com/Twisol
Top

Posted by Nick Gammon   Australia  (23,102 posts)  Bio   Forum Administrator
Date Reply #14 on Fri 22 Jan 2010 02:32 AM (UTC)
Message
Good idea, announcement page has been changed to reflect that.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


126,769 views.

This is page 1, subject is 3 pages long: 1 2  3  [Next page]

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.