[Lazarus] Thread based timer vs TTimer

Graeme Geldenhuys mailinglists at geldenhuys.co.uk
Thu Jun 25 10:46:01 CEST 2015

On 2015-06-25 09:04, Michael Schnell wrote:
> I suppose I now can just do "git pull" to receive any updates that the 
> Lazarus svn might provide ?

Close. My Lazarus mirror doesn't have an 'activenogui' branch, so doing
a pull will not fetch anything. To update your repository with the
latest SVN Trunk changes, you need to [alternatives exist, but this is
easiest to explain] switch to the 'upstream' branch, then to a 'git pull'.

My apologies, your 'activenogui' branch should have been created from
'upstream', not 'origin/upstream'. The difference being, you don't want
'activenogui' to be a tracking branch (see docs for an explanation). To
fix this, simply run the following command:

  $ git branch --unset-upstream activenogui

This means you can now fetch the latest Trunk changes, and it will not
affect your 'activenogui' branch - no automatic merges/updates will
occur. This is what you want. It is best to manually update your branch
with the latest Trunk changes, at a time that suites you best.

Now, to update your 'upstream' branch with the latest Trunk changes:

  // currently in 'activenogui' branch
  $ git stash          // to safe-keep any local uncommitted changes
  $ git checkout upstream
  $ git pull
  $ git checkout activenogui
  $ git stash pop     // restore your local uncommitted changes

You can now review the new changes in 'upstream' and periodically (eg:
once a week) bring your 'activenogui' up to date with the latest Trunk
changes by simply merging 'upstream' into 'activenogui'

  // while in 'activenogui' branch
  $ git merge upstream

Never make any commits in the 'upstream' branch! Always make commits in
local branches, even if it is simply a one commit bug fix you want to
share with the Lazarus team. This will save you from lots of
frustration, and eliminate pull conflicts.

> I suppose I can do "git push" to provide my own code ?

I'm assuming you are using Github, and I assume you have your own github
account. Now if you haven't yet, create a new "Lazarus" repository via
the Github web interface. DO NOT let Github initialize the the
repository. Once Github has created the repository, it will show you the
exact commands and URL information you need to use to link to it. When
Github's instructions refer to 'origin', replace that with the name

What you will end up with is the following.

 * Your lazarus repository on your computer will point to two remote
  - 'origin' which points to my Lazarus mirror. Used for getting the
     latest SVN Trunk changes.
  - 'github' which points to your Lazarus repository in your Github
    account. This is the one you have read/write access to.
 * When you are ready to share any code, you push to the 'github'

  // in 'activenogui' and ready to share changes with the world
  $ git push github activenogui

I believe the last parameter is optional, once you have used it at least

I never use the name 'origin' to refer to remote repositories. I find it
not informative enough. It is just a name after all, and you can rename
it whenever you want. I use more descriptive names, so I know exactly
where I am pushing or pulling from (eg: 'github', 'sourceforge' etc). So
in your case I might rename the remote repository named 'origin' to be
'graemeg'. So when you do a 'git pull graemeg' you know exactly which
repository you referring too, and there is no confusion where the data
is coming from.

I think all this information is already in the Lazarus Wiki under the
Git Mirror page. If not, it might be worth adding.

  - Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal

More information about the Lazarus mailing list