From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5362 invoked by alias); 17 Jun 2013 17:05:06 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 31484 Received: (qmail 3798 invoked from network); 17 Jun 2013 17:04:51 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <130617100419.ZM16218@torch.brasslantern.com> Date: Mon, 17 Jun 2013 10:04:19 -0700 In-reply-to: Comments: In reply to Mikael Magnusson "Re: git branches and compilation" (Jun 17, 12:57pm) References: <130615124610.ZM12323@torch.brasslantern.com> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh workers Subject: Re: git branches and compilation MIME-version: 1.0 Content-type: text/plain; charset=us-ascii On Jun 17, 12:57pm, Mikael Magnusson wrote: } } > Having been annoyed a couple of times by things not recompiling when a } > different branch is checked out (especially the texinfo inputs in Doc/, } > leading to reams of bad node errors when doing "make info") I dug into } > this a bit further and found "metastore". } } I don't quite understand the purpose... When you change branches you want } the source files to have an updated mtime, otherwise they will not be newer } than the build files of the previously checked out branch and make will not } rebuild. So what git does is what you usually want for source code -> "the } files on disk changed so rebuild". How does setting the timestamps older } help? This is probably because I'm using build trees that are separated from the source tree (cf. patch in 31474) so I have several different sets of build files with different timestamps. When I change brances, only the files that are different on the new branch get an updated mtime. In some case "different" means "reverted to an older version" which is not really newly modified. This causes the relative mtimes of source files to one another to be off, so in some cases the Makefiles themselves need to be rebuilt but are not. This also affects doc files that have cross-references and all need to be rebuilt together, but don't have mutual dependency reflected in Makefile. It's possible that in the latter case I'm just masking the problem and NOT recompiling things that need to be. As I said, I haven't had a chance to test it very thoroughly. I could believe that (re)storing timestamps of the object files may cause a problem, so in fact it's likely essential to the process that I'm using separate build trees.