From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Engster Newsgroups: gmane.emacs.devel Subject: Re: On the subject of Git, Bazaar, and the future of Emacs development Date: Thu, 28 Mar 2013 10:07:29 +0100 Message-ID: <87obe3gaem.fsf@engster.org> References: <87y5d9p5td.fsf@dex.adm.naquadah.org> <87vc8dtbcb.fsf@lifelogs.com> <871ub1gmdf.fsf@engster.org> <87d2ulovd0.fsf@dex.adm.naquadah.org> <85r4j0h1ww.fsf@member.fsf.org> <85li98h1qx.fsf@member.fsf.org> <87ehf0b3x2.fsf@uwakimon.sk.tsukuba.ac.jp> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1364461662 31124 80.91.229.3 (28 Mar 2013 09:07:42 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 28 Mar 2013 09:07:42 +0000 (UTC) Cc: Stephen Leake , emacs-devel@gnu.org To: "Stephen J. Turnbull" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Mar 28 10:08:05 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UL8oS-0006V6-Bi for ged-emacs-devel@m.gmane.org; Thu, 28 Mar 2013 10:08:00 +0100 Original-Received: from localhost ([::1]:59703 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UL8o4-0004Xa-6t for ged-emacs-devel@m.gmane.org; Thu, 28 Mar 2013 05:07:36 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:37335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UL8o1-0004XR-Du for emacs-devel@gnu.org; Thu, 28 Mar 2013 05:07:34 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UL8o0-0004dN-2z for emacs-devel@gnu.org; Thu, 28 Mar 2013 05:07:33 -0400 Original-Received: from randomsample.de ([83.169.19.17]:55449) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UL8nz-0004dB-Ne for emacs-devel@gnu.org; Thu, 28 Mar 2013 05:07:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=utBJ3+Mtx50NIWe5Uen1IeDX/yfuM7Z8HM9oFhzu09Q=; b=f9gpQ/4Mx55jmDAZ+6I/Soi7pzT9sHhwj1w+gRVLfxy3ewYTExsy7/I5f/PHJS246pFhT+tkiJFPkPebJq3QKnNt4MfR0BUSkL+IfweYwmjYnPfzVlPRNUqXL0HTW12m; Original-Received: from dslc-082-082-160-208.pools.arcor-ip.net ([82.82.160.208] helo=spaten) by randomsample.de with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1UL8nx-0006Jo-M2; Thu, 28 Mar 2013 10:07:29 +0100 In-Reply-To: <87ehf0b3x2.fsf@uwakimon.sk.tsukuba.ac.jp> (Stephen J. Turnbull's message of "Thu, 28 Mar 2013 12:26:33 +0900") User-Agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.3 (gnu/linux) Mail-Followup-To: "Stephen J. Turnbull" , Stephen Leake , emacs-devel@gnu.org X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 83.169.19.17 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:158344 Archived-At: Stephen J. Turnbull writes: > Multi-person, multi-branch workflows admit a nastier kind of geometry, > which the Bazaar developers call "criss-cross merges" for an obvious > reason: Yes, I get 'criss-cross merge' warnings all the time. To hopefully make clear what a "cross-project merge" implies, here's my current setup for the CEDET merge: /--to-emacs <-| ---------------------> / ^ | diff|patch | | | | | | CEDET ----trunk| <-| Emacs trunk | | | | \ | diff|patch \--from-emacs -| <-------------------- CEDET->Emacs: This is actually fairly easy. The 'to-emacs' branch is a subset of Emacs trunk, containing only the files from CEDET upstream, but generated from CEDET 'trunk'. This also handily tracks necessary renames (for instance, EIEIO is located under lisp/emacs-lisp in Emacs, but in CEDET it is in lisp/eieio). So in theory, I can just merge 'trunk' into 'to-emacs', generate a diff from this merge, and apply it to Emacs trunk. In practice however, I get a conflict for every file that was changed in 'trunk' but does not exist in 'to-emacs' (and there are many such files). Unfortunately, bzr cannot automatically deal with this (is git able to do that?). But it's a minor issue, since I can easily script doing 'bzr --take-this resolve' on those files. Emacs->CEDET: Now that's tedious. You have to first generate a list of commits in Emacs trunk which changed files from CEDET. Then you try to cherry-pick those commits into the 'from-emacs' branch. Doing this by hand is a nightmare, so I've written a package for this (cedet-emacs-merge.el in CEDET trunk). It generates this list, display them nicely, lets me test the patches, show conflicts, generates commit messages, and so on. Most importantly, it keeps track of things I have applied or ignored and saves this state in the repository as a file which I can load later. When I've cherry-picked all the commits to 'from-emacs'. I also have to merge it into 'to-emacs' before merging 'trunk', as I don't want things in my diff for CEDET->Emacs which originated from Emacs in the first place. I guess this is where the criss-crossing comes from. Yep, it's messy. But I'm used to it now. The most time consuming thing is fixing ChangeLogs (we don't have any in CEDET and generate them from commit logs). -David