unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Giorgos Keramidas <keramida@ceid.upatras.gr>
To: Richard Stallman <rms@gnu.org>
Cc: esr@snark.thyrsus.com, emacs-devel@gnu.org, esr@thyrsus.com,
	acm@muc.de, eliz@gnu.org
Subject: Re: What a modern collaboration toolkit looks like
Date: Thu, 3 Jan 2008 03:08:08 +0200	[thread overview]
Message-ID: <20080103010807.GB13318@kobe.laptop> (raw)
In-Reply-To: <E1JA0I8-0002I3-Hq@fencepost.gnu.org>

On 2008-01-02 04:53, Richard Stallman <rms@gnu.org> wrote:
>     You can commit a change offline (git commit).  Later on,
>     when you are online, you say `git pull' to get the current
>     state of the repository, and automatical merging happens
>     (and the usual warnings if there are conflicts).  Finally,
>     you say `git push' to synchronize your git repository with
>     the global one.
>
> Is this substantially different from CVS, or is it just
> relabeling?  It sounds like `git push' is basically equivalent
> to CVS commit.

Yes, there is a substantial difference between committing in a
distributed SCM like Git, and Mercurial (the latter is the one I
am most familiar with).

A commit `attaches' a changeset to a `parent changeset', forming
a changeset graph instead of a linear history.  So if I pull from
the central Emacs repository the changes:

    [1]---[2]---[3]

and start committing on top of this, I will end up with a local
history like this:

    [1]---[2]---[3]---[4]---[5]---[6]

In the mean time, other people have the chance to commit their
own changes to the central tree, on top of the original [3]
changeset.  When I finish my work, and I `pull' from the central
tree again, the local Git history becomes:

                  ,---[7]---[8]
                 /
    [1]---[2]---[3]---[4]---[5]---[6]

A major difference in this sort of history is that *all* changes
have been safely stashed away in the local history.  The working
area of the repository/workspace can, for all intents and
purposes, be considered volatile and completely unimporant.

Having this sort of local history, I can `check out' any one of
the committed changes.  Looking at the `remote' changes I just
pulled is possible with normal `update' commands in Mercurial (a
similar command is available in Git).  This means that switching
between the `local' version and the `remote' version of the code
is as easy as:

    hg update --clean 8               ; remote version is checked out

    hg update --clean 6               ; local version is checked out

The usual commands, like `diff' also work, i.e.:

    hg diff -r 6:8                    ; look at 6 -> 8 patch

    hg diff -r 8:6                    ; look at the inverse patch

Note that a `merge' has not happened yet.  If the remote head of
the history tree looks easy enough to merge, a merge operation
can be done in two ways:

    1) Merging of the two heads, to forma history graph like:

                       ,---[7]---[8]---------[9]
                      /                      /
         [1]---[2]---[3]---[4]---[5]---[6]--'

    2) A `rebase' operation, which restores the linear history of
       the remote branch, and `rebases' all the local changesets
       on top of the remote branch:

         [1]---[2]---[3]---[7]---[8] - - - [4']---[5']---[6']

> With CVS, until you commit your changes, new changes can be
> installed in the repository, and when you DO get around to
> committing your changes, you will have to merge them with
> whatever others have installed.  Once you commit, others trying
> to commit will have the burden of merging their changes with
> your already-committed changes.

The main ease of use from the distributed SCM systems is a result
of the different from the workflow you just described.  With CVS
committers are encouraged to avoid committing local changes,
until a future moment when ``the patch will be done and fully
working''.  When they reach that future point, the onus of the
merging falls on the person who wants to commit.

With a distributed SCM system, committing is not so `scary'.
It's ok to commit often, and commit short changes.  They are
local.  They won't break the remote tree for anyone else.

Merging can also be done much more often.  This means that it's
ok to merge or rebase a pile of local changes 10 or 20 times,
while they are being developed.  If the first sort of merging
described above is chosen, then repeated merges work
incrementally, so conflicts that have been resolved in one of the
past merges don't reappear in future merges.

> With git, I would guess that the same situation obtains until
> you do `git push' with your changes.  Thus, I think that `git
> push' is the true analogue to CVS commit.

If a dSCM repository is `anointed' by the team as *the*
repository, then there are hooks which can control whether:

    * It is ok to create `remote heads' with unmerged changes
      (this is what happens for example if someone pushes the
      sample history graph shown above, before the merge of
      change [9] happens)

    * It is ok to push new `branches' in the remote tree

> This is based on surmise rather than knowledge.  If it is
> wrong, where is the mistake?

It's mostly right.  A `push' operation is that `publishes' a
change in a dSCM world.  The only difference is that a `commit'
in a centralized SCM (like CVS) does several things, which have
been split in a more fine-grained set of operations in a
distributed SCM system.  When a commit happens in CVS then:

    * A local `merge' has completed

    * CVS add, or remove commands have been completed

    * A commit sends the files to the remote server (the
      `publishing' part)

    * The local workspace state is updated to match the new state
      of the tree

In a distributed SCM a `commit' is only part of the above:

    * A changeset is recorded in the local repository storage
      area

    * Local workspace state is updated

A merge is not strictly necessary, and the changes haven't been
published anywhere else yet.

HTH,
Giorgos

  parent reply	other threads:[~2008-01-03  1:08 UTC|newest]

Thread overview: 277+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-30 12:22 What a modern collaboration toolkit looks like Eric S. Raymond
2007-12-30 15:32 ` Thien-Thi Nguyen
2007-12-30 15:42 ` Richard Stallman
2007-12-30 17:22   ` Eric S. Raymond
2007-12-30 20:25     ` Robert J. Chassell
2007-12-30 21:55     ` Nick Roberts
2007-12-30 22:25       ` Lennart Borgman (gmail)
2007-12-30 22:58         ` Richard Stallman
2007-12-30 22:58     ` Richard Stallman
2007-12-31  2:58       ` Eric S. Raymond
2007-12-31 12:14         ` Thien-Thi Nguyen
2008-01-01 23:57           ` John S. Yates, Jr.
2008-01-02  1:46             ` Thien-Thi Nguyen
2007-12-31 22:29         ` Richard Stallman
2008-01-01  0:19           ` Leo
2007-12-31  4:31 ` Eli Zaretskii
2007-12-31 13:07   ` Eric S. Raymond
2007-12-31 20:57     ` Eli Zaretskii
2007-12-31 21:41       ` Eric S. Raymond
2007-12-31 23:00         ` Nick Roberts
2008-01-01  0:50           ` Eric S. Raymond
2008-01-01  4:22             ` Eli Zaretskii
2008-01-01  6:20               ` Eric S. Raymond
2007-12-31 23:12         ` Eli Zaretskii
2008-01-01  0:27           ` Dan Nicolaescu
2008-01-01  3:00             ` Mike Mattie
2008-01-01  7:57               ` Drew Adams
2008-01-02 19:28               ` Agustin Martin
2008-01-03  9:50               ` Richard Stallman
2008-01-05  3:34                 ` Mike Mattie
2008-01-06  8:09                   ` Richard Stallman
2008-01-03  9:50               ` Richard Stallman
2008-01-01 20:44             ` Eli Zaretskii
2008-01-02  4:17               ` Dan Nicolaescu
2008-01-05 10:48                 ` Eli Zaretskii
2008-01-01  0:57           ` Eric S. Raymond
2008-01-01  4:21             ` Eli Zaretskii
2008-01-01  0:10         ` Miles Bader
2008-01-01  1:06           ` Eric S. Raymond
2008-01-01  1:41             ` Miles Bader
2008-01-01  2:16               ` Eric S. Raymond
2008-01-01 19:43           ` Tom Tromey
2008-01-01 21:11             ` Nick Roberts
2008-01-02  0:25             ` Miles Bader
2008-01-02  1:12               ` Tom Tromey
2008-01-02 17:19                 ` On-the-fly compiling (was Re: What a modern collaboration toolkit looks like) Mark A. Hershberger
2008-01-02 20:57                   ` On-the-fly compiling Stefan Monnier
2008-01-02 22:33                     ` Lennart Borgman (gmail)
2008-01-02 23:09                   ` Tom Tromey
2008-01-02  9:53             ` What a modern collaboration toolkit looks like Richard Stallman
2008-01-01 11:28       ` Tassilo Horn
2008-01-01 20:36         ` Eli Zaretskii
2008-01-02  0:29           ` Miles Bader
2008-01-02  4:14             ` Eli Zaretskii
2008-01-02  4:33               ` Miles Bader
2008-01-02  8:24                 ` Werner LEMBERG
2008-01-02  8:20           ` Tassilo Horn
2008-01-03  9:50             ` Richard Stallman
2008-01-03 13:15               ` Ævar Arnfjörð Bjarmason
2008-01-04 13:56                 ` Stefan Monnier
2008-01-02  8:41           ` tomas
2008-01-03  9:50         ` Richard Stallman
2008-01-03 10:16           ` Miles Bader
2008-01-05  5:55             ` Richard Stallman
2008-01-05  6:59               ` Óscar Fuentes
2008-01-05 15:29                 ` Eli Zaretskii
2008-01-05 19:53                   ` Óscar Fuentes
2008-01-06  8:09                 ` Richard Stallman
2008-01-05  8:55               ` David Kastrup
2008-01-05  9:55                 ` Werner LEMBERG
2008-01-05 15:23                 ` Eli Zaretskii
2008-01-05 15:31                   ` Lars Magne Ingebrigtsen
2008-01-05 15:39                   ` David Kastrup
2008-01-06  8:09                 ` Richard Stallman
2008-01-06  9:51                   ` tomas
2008-01-06 11:02                   ` David Kastrup
2008-01-06 12:05                     ` Robert J. Chassell
2008-01-06 12:40                       ` David Kastrup
2008-01-06 16:51                         ` Robert J. Chassell
2008-01-06 17:03                           ` David Kastrup
2008-01-07  4:18                         ` Richard Stallman
2008-01-05 22:46               ` Stefan Monnier
2008-01-06 18:09                 ` Richard Stallman
2008-01-07 17:17               ` Gregory Collins
2008-01-07 23:21                 ` Stephen J. Turnbull
2008-01-08  0:25                   ` Gregory Collins
2008-01-08  0:51                     ` David Kastrup
2008-01-08  2:43                       ` Mike Mattie
2008-01-08  3:03                         ` YAMAMOTO Mitsuharu
2008-01-08  4:25                           ` Mike Mattie
2008-01-08 19:07                 ` Richard Stallman
2008-01-03 10:32           ` David Kastrup
2008-01-01 17:11     ` Alan Mackenzie
2008-01-01 18:05       ` Werner LEMBERG
2008-01-01 18:27         ` Alan Mackenzie
2008-01-01 18:28           ` Werner LEMBERG
2008-01-02  9:53             ` Richard Stallman
2008-01-02 10:36               ` Werner LEMBERG
2008-01-02 12:23                 ` Eric S. Raymond
2008-01-04  5:27                 ` Richard Stallman
2008-01-02 11:27               ` Thien-Thi Nguyen
2008-01-02 12:17               ` Eric S. Raymond
2008-01-03  1:26                 ` Stephen J. Turnbull
2008-01-03  2:49                   ` Eric S. Raymond
2008-01-04  5:27                 ` Richard Stallman
2008-01-04  5:35                   ` Miles Bader
2008-01-04 12:47                     ` Eric S. Raymond
2008-01-05 14:30                     ` Richard Stallman
2008-01-06  1:10                       ` Miles Bader
2008-01-04 12:45                   ` Eric S. Raymond
2008-01-05 14:30                     ` Richard Stallman
2008-01-05 15:29                       ` Eric S. Raymond
2008-01-05 15:59                       ` Andreas Schwab
2008-01-06  2:14                         ` Mike Mattie
2008-01-03  1:08               ` Giorgos Keramidas [this message]
2008-01-03  2:56                 ` Eric S. Raymond
2008-01-03  3:18                   ` Giorgos Keramidas
2008-01-04  5:27                 ` Richard Stallman
2008-01-04  8:51                   ` David Kastrup
2008-01-05 14:30                     ` Richard Stallman
2008-01-05 15:28                       ` David Kastrup
2008-01-06 10:46                         ` Richard Stallman
2008-01-06 11:10                           ` David Kastrup
2008-01-07  4:18                             ` Richard Stallman
2008-01-07  4:36                               ` dhruva
2008-01-07  4:52                               ` Sam Steingold
2008-01-07  5:09                                 ` dhruva
2008-01-07  8:17                                 ` David Kastrup
2008-01-07 15:37                                   ` Stefan Monnier
2008-01-07 15:47                                     ` David Kastrup
2008-01-07 16:22                                       ` Stefan Monnier
2008-01-07 17:09                                         ` David Kastrup
2008-01-07 15:40                                 ` CHENG Gao
2008-01-07 23:36                                   ` Stephen J. Turnbull
2008-01-08  4:31                                     ` CHENG Gao
2008-01-08  5:07                                     ` Mike Mattie
2008-01-08  2:56                                   ` Mike Mattie
2008-01-08  9:37                                     ` Andreas Schwab
2008-01-07  5:16                               ` Jason Earl
2008-01-07 17:16                                 ` Richard Stallman
2008-01-07 17:45                                   ` Gregory Collins
2008-01-08 19:07                                     ` Richard Stallman
2008-01-08 19:50                                       ` Miles Bader
2008-01-13 20:06                                       ` Giorgos Keramidas
2008-01-14 11:28                                         ` Richard Stallman
2008-01-07 21:28                                   ` Jason Earl
2008-01-07  8:15                               ` David Kastrup
2008-01-07  8:33                                 ` Giorgos Keramidas
2008-01-07 23:50                                   ` Stephen J. Turnbull
2008-01-05 21:11                       ` Stephen J. Turnbull
2008-01-06 18:08                         ` Richard Stallman
2008-01-07  9:35                       ` Piet van Oostrum
2008-01-01 20:53         ` Nick Roberts
2008-01-02  9:53           ` Richard Stallman
2008-01-02 12:24             ` Eric S. Raymond
2008-01-02 15:19               ` David Kastrup
2008-01-02 20:35                 ` Karl Fogel
2008-01-02 19:19                   ` Andreas Schwab
2008-01-02 19:23                   ` Romain Francoise
2008-01-03  1:18                 ` Giorgos Keramidas
2008-01-03  7:55                   ` David Kastrup
2008-01-02  9:53         ` Richard Stallman
2008-01-02 10:03           ` David Kastrup
2008-01-02 10:05           ` Tassilo Horn
2008-01-02 11:31             ` Alan Mackenzie
2008-01-02 11:28               ` Tassilo Horn
2008-01-02 14:26           ` Óscar Fuentes
2008-01-02 19:48             ` Karl Fogel
2008-01-02 18:43               ` Andreas Schwab
2008-01-02 22:10               ` Alfred M. Szmidt
2008-01-03  2:58                 ` Karl Fogel
2008-01-03  1:21               ` Giorgos Keramidas
2008-01-03  9:14                 ` Andreas Schwab
2008-01-03 10:57                   ` Giorgos Keramidas
2008-01-01 19:37       ` Eric S. Raymond
2008-01-01 21:46         ` Alan Mackenzie
2008-01-01 22:49           ` Eric S. Raymond
2008-01-02 17:05             ` Mark A. Hershberger
2008-01-03  9:49             ` Richard Stallman
2008-01-02  8:35           ` Tassilo Horn
2008-01-02  5:54         ` John S. Yates, Jr.
2008-01-02 11:52           ` Eric S. Raymond
2008-01-03  9:50           ` Richard Stallman
2008-01-02  8:51         ` tomas
2008-01-02  9:53         ` Richard Stallman
2008-01-01 22:01       ` Romain Francoise
2007-12-31 13:11 ` Alan Mackenzie
2007-12-31 13:24   ` Miles Bader
2007-12-31 13:44     ` Alan Mackenzie
2007-12-31 15:45       ` Eric S. Raymond
2007-12-31 15:14     ` Juanma Barranquero
2007-12-31 15:31     ` Eric S. Raymond
2007-12-31 15:25   ` Eric S. Raymond
2008-01-01 20:34     ` Alan Mackenzie
2008-01-01 20:57       ` Eric S. Raymond
2008-01-02  9:53         ` Richard Stallman
2008-01-02 12:29           ` Eric S. Raymond
2008-01-02 12:59             ` dhruva
2008-01-02 13:11               ` Miles Bader
2008-01-02 13:17               ` Tassilo Horn
2008-01-02 13:49                 ` David Kastrup
2008-01-04  5:28                   ` Richard Stallman
2008-01-04  7:03                     ` John S. Yates, Jr.
2008-01-05 14:29                       ` Richard Stallman
2008-01-02 13:48               ` Werner LEMBERG
2008-01-02 13:56                 ` dhruva
2008-01-02 14:55                 ` Eric S. Raymond
2008-01-03  1:13                 ` Giorgos Keramidas
2008-01-02 14:50               ` Eric S. Raymond
2008-01-19 17:45 ` Jari Aalto
2008-01-20  2:59   ` dhruva
2008-01-20  5:10     ` Miles Bader
2008-01-20  5:36       ` Juanma Barranquero
2008-01-20  6:03         ` Miles Bader
2008-01-20 19:28           ` Eli Zaretskii
2008-01-20 20:42             ` Juanma Barranquero
2008-01-20 20:17           ` Juanma Barranquero
2008-01-20 20:28           ` Juanma Barranquero
2008-01-21  2:11             ` Miles Bader
2008-01-21  2:38               ` Karl Fogel
2008-01-21  2:49                 ` Miles Bader
2008-01-21  3:06                   ` Nick Roberts
2008-01-21  3:17                     ` Miles Bader
2008-01-21  3:26                     ` Stephen J. Turnbull
2008-01-21  3:16                   ` Glenn Morris
2008-01-21  4:11                     ` Nick Roberts
2008-01-21 10:00                     ` Thien-Thi Nguyen
2008-01-21  2:41               ` Juanma Barranquero
2008-01-21  3:01               ` Nick Roberts
2008-01-21  9:07   ` Richard Stallman
2008-01-21 15:51     ` Dan Nicolaescu
2008-01-21 17:37       ` Miles Bader
2008-01-21 17:53         ` Tom Tromey
2008-01-21 20:06           ` Stefan Monnier
2008-01-21 19:50             ` Tom Tromey
2008-01-22  0:33         ` Dan Nicolaescu
2008-01-24 14:43     ` Mark A. Hershberger
2008-01-24 15:00       ` Juanma Barranquero
2008-01-24 15:34         ` dhruva
2008-01-24 19:52           ` Stephen J. Turnbull
2008-01-25  0:43             ` Juanma Barranquero
2008-01-25 22:47             ` Richard Stallman
2008-01-25 23:13               ` Alfred M. Szmidt
2008-01-25 23:36                 ` Miles Bader
2008-01-27  0:45                   ` Richard Stallman
2008-01-27 17:39                     ` David Kastrup
2008-01-27 20:06                       ` Nick Roberts
2008-01-27 22:21                         ` David Kastrup
2008-01-27 23:58                         ` Johan Bockgård
2008-01-28  7:17                         ` Richard Stallman
2008-01-28  7:17                         ` Richard Stallman
2008-01-28  7:57                           ` GNU Project [was: Re: What a modern collaboration toolkit looks like] Nick Roberts
2008-01-28 21:32                             ` Richard Stallman
2008-01-28  7:18                       ` What a modern collaboration toolkit looks like Richard Stallman
2008-01-28  7:30                         ` David Kastrup
2008-01-28  9:18                           ` Stephen J. Turnbull
2008-01-28 21:32                           ` Richard Stallman
2008-01-26  1:23                 ` Thomas Lord
  -- strict thread matches above, loose matches on Subject: below --
2008-01-01  3:09 Nick Roberts
2008-01-01  6:24 ` Eric S. Raymond
2008-01-03 20:32 Trey Jackson
2008-01-04  9:46 ` dhruva
2008-01-05 13:36   ` Eli Zaretskii
2008-01-05 15:04     ` dhruva
2008-01-05 15:13       ` Eli Zaretskii
2008-01-06  1:17     ` Miles Bader
2008-01-04 13:43 ` Gianluca Della Vedova
2008-01-05 14:30 ` Richard Stallman
2008-01-06  5:03   ` Trey Jackson
2008-01-06  6:58     ` Nick Roberts
2008-01-07  4:57       ` Trey Jackson
2008-01-07  5:54         ` Nick Roberts
2008-01-06 18:09     ` Richard Stallman
2008-01-07  5:16       ` Trey Jackson
2008-01-07  6:15         ` Nick Roberts
2008-01-07 15:41         ` Stefan Monnier
2008-01-29  5:43 Werner LEMBERG

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080103010807.GB13318@kobe.laptop \
    --to=keramida@ceid.upatras.gr \
    --cc=acm@muc.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=esr@snark.thyrsus.com \
    --cc=esr@thyrsus.com \
    --cc=rms@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).