Git issues with submodules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey everyone from Blender developers!

As you might already know, we've recently switched from SVN to Git to
host Blender sources. In general it works really awesome, but we've
got some issues with submodules.

in SVN we had separate repositories for addons and translations which
were attached to main tree as svn:external. The reason for this was:

1. Separate commit access between core sources and addons so nobody
accidentally breaks anything in the core.
2. Separate commit history to help tracking issues down.

For the most developers and all artists (yes, we've got loads of
artists who builds blender on their own) it makes sense to always
checkout latest versions of addons and translations when updating
working tree.

We used Git submodules as a replacement for svn:external, with some
tweaks and specific of update procedure.

Namely, we always do `git submodule update --remote` to pull all the
latest changes from submodules. This will mark checkout as modified
because submodule hash changes. To avoid infinite commits of submodule
hash we've added ignore=all to their configuration.

In most cases it works fine, but there're some circumstances when it
gives weirdo issues.

Namely, `git ls-files -m` will show addons as modified, regardless
ignore=all configuration. In the same time `git diff-index --name-only
HEAD --` will show no changes at all.

This leads to issues with Arcanist (which is a Phabricator's tool) who
considers addons as uncommited changes and either complains on this or
just adds this to commits.

This issue i might easily reproduce on my laptop with latest Git
1.8.4.3. There're also some more issues which happens to our
developers and which i can not quite reproduce.

Sometimes it happens so git checkout to another branch yields about
uncommited changes to addons and doesn't checkout to another branch.

My guess here is that submodule hash in master and branch was
different and having hash modified in master somehow prevented changes
from another branch to be checked out. In this case question would be:
what would be the proper way to checkout branches when having
submodules configured this way?

Second issue is that some developers still manages to commit changes
to submodule hash, which i have totally no idea why Git allows to
include such a changes. I could not do such a commits on purpose even.

Here're some links to help understanding what's going on:

- Blender repository browser: http://developer.blender.org/diffusion/B/
- Task in our tracker about issues we've got with Git:
http://developer.blender.org/T37528
- History of changes to addons hash:
http://developer.blender.org/diffusion/B/history/master/release/scripts/addons

We're totally new to git submodules and clarification (and maybe even
confirmed bug with ls-files -m :) would really be appreciated. We're
also open for suggestions about re-configuring our submodules so they
works in a way we'd expect this.

Thanks in advance!

-- 
With best regards, Sergey Sharybin
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]