From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jakub Narebski Subject: Re: [3/4] What's not in 1.5.2 (new topics) Date: Sat, 19 May 2007 18:38:50 +0200 Message-ID: <200705191838.50797.jnareb@gmail.com> References: <200705170539.11402.andyparkins@gmail.com> <20070518124123.GX4489@pasky.or.cz> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Cc: Josef Weidendorfer , "Michael S. Tsirkin" , Junio C Hamano , Andy Parkins , Nicolas Pitre , git@vger.kernel.org To: Petr Baudis X-From: git-owner@vger.kernel.org Sun May 20 01:07:32 2007 Return-path: Envelope-to: gcvg-git@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1HpY1J-0004Xc-2O for gcvg-git@gmane.org; Sun, 20 May 2007 01:07:29 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758933AbXESXHW (ORCPT ); Sat, 19 May 2007 19:07:22 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757826AbXESXHW (ORCPT ); Sat, 19 May 2007 19:07:22 -0400 Received: from mu-out-0910.google.com ([209.85.134.189]:37003 "EHLO mu-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757434AbXESXHV (ORCPT ); Sat, 19 May 2007 19:07:21 -0400 Received: by mu-out-0910.google.com with SMTP id w1so823221mue for ; Sat, 19 May 2007 16:07:20 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:from:to:subject:date:user-agent:cc:references:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:message-id; b=bGiTcf8eLV8QW87K9BJ4zkz0ZnJMYNzv37jzJI5ehuW/HD71x6qsfxU+csykRD84zrqGO2jEcHoi1kUR/oV7e8cmYuLHUtNy2yUJfOEFGyr0lmTb8d9GhBv9vQDbYFCCeu9XY0YBeQWyKrFikcf0QskNdjLCKqbDAKCzg/uvhnE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:from:to:subject:date:user-agent:cc:references:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:message-id; b=BCzDBLB1glfoq/0KP7gWjJTDnu7nPo1TGBT0u+nPrlPWvUfRWMQlLvY7UGsGRLpOSxjZIxmCcjMbS67lcsXZdU/K3GvSCR10xiyRergOar2t5AEpEVjvG0Ip4h3f+ZBgIxTp7fOzZyy3yvpPRMbPuLZfuPY/yzVZssAwr9/iez0= Received: by 10.82.180.17 with SMTP id c17mr5818093buf.1179616039714; Sat, 19 May 2007 16:07:19 -0700 (PDT) Received: from host-89-229-25-173.torun.mm.pl ( [89.229.25.173]) by mx.google.com with ESMTP id e8sm12110510muf.2007.05.19.16.07.14; Sat, 19 May 2007 16:07:14 -0700 (PDT) User-Agent: KMail/1.9.3 In-Reply-To: <20070518124123.GX4489@pasky.or.cz> Content-Disposition: inline Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: On Fri, 18 May 2007, Petr Baudis wrote: > On Fri, May 18, 2007 at 02:00:07PM CEST, Jakub Narebski wrote: >> There is a bit ugly solution for this: instead of using symbolic name >> in versioned .gitmodules for a subproject (for a repo), use subproject >> identifier (inode), and put it in the tag object (or config) together with >> the URL. Git would then search all the subproject / submodule info for >> a given inode. You could have more than one inode / identifier name for >> a subproject repo; this would avoid the "independently created" issue >> with using inodes / file-ids in distributed SCM. One would have to >> ensure however that different subprojects get assigned different inodes. > > Well, then it doesn't make any difference, no? You just renamed the > problem but it stays the same - to ensure uniqueness even across > repositories. > > Ok, you can declare now that you will just think out a UUID for the > subproject, but aside of not fitting well with the whole git philosophy, > then you don't need the indirection again, just use the UUID as the tag > name. > > I have the feeling that I'm missing something basic in your proposal... I was thinking about _automatic_ UUID, generated by git. For example it could be sha1 of first subproject commit which appeared in supermodule. It is easy to check if two UUID correspond to the same repository: check if both objects are present, or perhaps that one is reachable from the other, or that they have common parent. This kind of UUID is not that different from (global) SHA1 of object. So the idea is to have versioned, i.e. in-tree mapping from directory names to repositories via some kind of identifier: Junio idea of using URL of repository, with possibility of overriding it in repo config, the idea of using tag name, and having URL for repo in tag contents, and my idea of tag name of tag containing UUID. To find the URL you would search all the repo-tags for UUID, or for existence of commit with given sha1. But I haven't thought this idea through, so it migh be utter rubbish. The porcelain part of subproject / submodule support is not that easy, to cover for moving subproject "mountpoint", project changing URL, conflict of project names and different naming of the same project etc. -- Jakub Narebski Poland