On 12/15/06, Josef Weidendorfer <Josef.Weidendorfer@gmx.de> wrote:I'm very open to suggestions here, but the concept growing in my head is based around Linus 'module'-file and keep things simple. A git configuration file that specifies: * link name for reference * local path to link * submodule source * submodule path to tree/blob * submodule commit / HEAD / branch * options (depth-limit , ...) I'm reconsidering having the path-name in the link, it should be sufficient to have two SHA1's, one for the commit and one for the tree/blob. Super-module should have the tree/blob in it's database so that the link part only is there for version information and reference (checking dirty state or history on the submodule). This way it easy to clone the super-project and use it without having to map up all sub-project sources. Sub-project sources is not important for version information and could always be specified in the project in a README-type of file. That would be a change in the modules file, maybe through a command that also fixes the link. The link will have to be updated in the index and commited as normal. Since we have the SHA1 (this is what we're using) and tree/blob information in the super-modules database the change itself is not a problem. The problem is to track renames/moves and your remove case in the submodule. The tool that tracks the submodule should probably warn/exit here and we would fix up the modules file manually. One of complex situation here as I see it is the ability to handle to track/checkout only a subset (tree/blob) of the submodule. This is also quite an important feature - in my example it means the difference of tracking one header file versus the whole source. If we can do path-limiting checkouts on a repo (module) we also can do it on a sub-module since they are exactly the same. This is a very powerful feature and it'd be a huge waste if it wasn't allowed for a super-module to do on submodules. What if we have no control of the submodule? This can be tracked from upstream, sourceforge, another company, etc. The submodule will often live their own life and could be X, kernel, gcc, cairo, whatever, ... If we disregard the commit info, the link will act exactly as a normal tree/blob. Git can know we're moving a subproject by watching the module file. The main problem is to keep modules file up-to-date with reality. We could enforce module file validity by disallowing such operations and let the user do a "force" operation which also alters the modules file. The symlink only exists in the modules file. We only have the SHA1's at the tree-level and there we have everything underneath the tree/blob SHA1 in our database. We will only know if the modules symlink file is dangling next time we fetch from the submodule - here we would notify the user but our database is still consistent. It makes no sense because the user seem to have act irrationally. The commit-chain is completely valid as it has tracked the correct history of the builds. I can't see any problems here, the build-project is independent of the source-project with it's own history. We can hope the user has given good explanations for his/her actions in the commit messages though. //Torgil - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Linus Torvalds | Linux 2.6.27-rc5 |
| Ingo Molnar | [patch 00/13] Syslets, "Threadlets", generic AIO support, v3 |
| Chris Snook | [PATCH 0/24] make atomic_read() behave consistently across all architectures |
| Greg Kroah-Hartman | [PATCH 005/196] Chinese: add translation of SubmittingDrivers |
| Marcel Holtmann | Bluetooth fixes for 2.6.27 |
| Evgeniy Polyakov | [resend take 2 0/4] Distributed storage. |
| Andrew Morton | Re: [Bugme-new] [Bug 9721] New: wake on lan fails with sky2 module |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
git: | |
| Ping Yin | [RFC] git reset --recover |
| Wink Saville | Resolving conflicts |
| Ping Yin | [PATCH 0/7] submodule: fallback to .gitmodules and multiple level module definition |
| Linus Torvalds | Re: git pull for update of netdev fails. |
| Richard Stallman | Real men don't attack straw men |
| Karel Kulhavy | lookup option in /etc/resolv.conf ignored |
| Stefan Beke | mail dovecot: pipe() failed: Too many open files |
| Will | fsck large filesystem, memory limit problem |
| Soft lock bug | 3 hours ago | Linux kernel |
| kernel module to intercept socket creation | 9 hours ago | Linux kernel |
| sysctl - dynamic registration problem | 9 hours ago | Linux kernel |
| Question on swap as ramdisk partition | 11 hours ago | Linux kernel |
| serial driver xmit problem | 16 hours ago | Linux kernel |
| Generic Netlink subsytem | 17 hours ago | Linux kernel |
| 'Report spam filter error' page broken | 19 hours ago | KernelTrap Suggestions and Feedback |
| Netfilter kernel module | 1 day ago | Linux kernel |
| Why Windows is better than Linux | 1 day ago | Linux general |
| How can I see my kernel messages in vt12? | 1 day ago | Linux kernel |
