New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Clone runtime and docs into build/runtime #633
Conversation
The 1) add submodules (or some other form if more fitting) for As you can see, Travis shows a failed build. Click on the |
Are you sure that you want to add them as submodules? In that case I think it would be better to clone them somewhere outside |
It's just that I used submodules when I prepared a patch for this issue, but use whatever seems most appropriate. And I have no idea about Windows. Do Win filesystems support symbolic links? |
I think NTFS does but FAT doesn't. Or something like that. It's probably better to copy. What would you think if I add the submodule to the top level folder and then copy them into |
Hmm, personally I would put them into You probably will have to alter |
I put everything under |
I think Otherwise it looks good to me. |
Either way is fine by me but didn't you want them to be updated if they On Sunday, April 27, 2014, Marco Hinz notifications@github.com wrote:
|
Via re-running LGTM 👍 |
I don't think I quite understand. We should have two targets? One for fetching and one for updating? |
LGTM, @jszakmeister what do you think about this? |
I guess two things come to mind:
It appears to be a submodule to me, but this hints at it intending to be something else.
It might be a good idea to consider using a shallow clone: So, the short form is that I'm not so sure about the approach (sorry @Lenniboy! I appreciate the contribution though!). @tarruda Do you have a vision about how things will get wrapped together, and how the runtime is going to be versioned with respect to the main neovim? |
Thanks, for the comments, @jszakmeister. I agree that the initial text is a little confusing. I was against using submodules, too, since they are quite complicated and fiddly to use and have the issues you mentioned (lots of manual updates necessary). @mhinz thought that they are the way forward, though. If there is one person you need to convince him. If we don't care about history we could also download the newest tarballs generated by Github rather than doing a shallow clone. (We would have to see what is faster.) Anyway, I'm happy to implement whatever way is chosen in Cmake. |
I didn't say submodules are the way to go, but I used them when I prepared a patch before you took over. ;-) I said whatever seems the most approriate. |
I didn't mean to put the blame on you. Group hug! I will just wait until there is a consensus on how it should happen. |
Didn't feel blamed, just wanted to point it out. ;> I guess @jszakmeister has to decide this, since, as our official build master, he knows most about the build system and probably also has some future changes in mind. |
ping |
I don't think it's up to me alone. There are some upsides and downsides either way. Whichever way is chosen though, we need to have a way to build without the presence of Git. That way we can make release tarballs with the correct contents and not require anyone building from a tarball to download more content. If we go with having submodules, I'm in favor of option (2): keeping it out of the build area and copying it in via CMake. Otherwise, I think we could add a target that will download and extract a couple tarballs from GitHub, but only if certain directories don't exists (perhaps a top-level runtime and docs folder). In which case, the top-level ones will be used instead. @justinmk any thoughts on the matter? |
Answering my own question: if developer already has submodule pulled, then the next build only needs to pull the diff.
Will that include libuv source? Unless I missed discussion about this, how about a cmake target that uses
Yes. Whatever we use (git submodules, git archive, git subtree, ...?), my instinct would be to pull the components into the locations in the source tree where they would be if they were not separate repositories. Legacy Vim has this tree:
So, I suggest pulling docs into
If I'm missing anything, please let me know. |
I very much agree with @justinmk and I think @jszakmeister does too. So lets figure out which way we want them to be placed there. I'm definitely not in love with git submodules and I've heard better things about subtrees, although it seems also not trivial to handle them correctly. I'm not aware of how Personally, I would vote for submodules. Any other opinions? |
I consider libuv a different sort of dependency, like curses, so I had no intention of including the source in the final tarball. We currently have code to pull libuv via the deps mechanism, and it builds static libraries in the right format, if they want to go that route--though it may not be flexible enough for everyone. But, the runtime and docs are a different story, IMHO. They should be bundled into the final release tarball. I'm not completely against submodules, but they are pegged against specific revisions. Which means they'll need to get updated often at the rate things are happening with Neovim. I've not tried nested submodules either, so I'm a bit concerned how well layering one inside the other will work, but maybe someone can play with that arrangement and give it a whirl?
/me agrees. BTW, do we know why they are separate repos at all? |
@tarruda decided it to reduce management overhead (different people could manage different repositories). |
@aktau If GitHub's administration quirks were the only reason to separate the repositories, then I would campaign to re-integrate the repositories. We shouldn't be fiddling with git submodules just to get around GitHub's limitations. But I can think of another reason: we will have possibly many GUI frontends, which, presumably, would not live in the core repository, so even if we integrate the docs and vimscript repos back into core, we'll still have to deal with separate GUI (and who-knows-what-else) repos. We haven't discussed what our release model will be. I assume (I don't know) that separate repositories may be helpful depending on our release model. Created #700 to start discussion on the release model. |
Submodules or subtree seem to be the options. What we need now is a workflow, so that updating the docs, etc, is not a pain in the ass for devs who want to submit a patch. If a developer commits to core and needs to update the docs also, what would that look like at the command line (using submodules, using subtree)? I'm going to play with this (unless someone already has it nailed down...), and hope that exposes an obvious choice. |
i'm not sure if my comment is totally relevant for this issue, but i'll bring it up anyway: One problem with the current organization is that the separate repos to not encourage developers to update documentation when a feature is added/removed. Moving the doc (and to some extent runtime) repos into the main neovim repo would make it easier for PRs to include both code and docs. I'm not sure if there are other ways to solve this issue. |
Agreed. I added the docs/runtime to separate repositories to make better use of github permissions and delegate maintenance of documentation, but having to send multiple PRs is really inconvenient. @justinmk What do you think about this? Should we merge the other repos into this one? |
@tarruda It's really tempting to do so (merge them into one), but give me until Monday to see if I can figure out an acceptable workflow using git submodules (I already determined that git subtree won't work for us). There could be other advantages to having separate repos, such as for licensing... |
👍 |
Speculation:
Unwarranted Assertion:
Yes, but nobody uses FAT for Windows anyway! Initially NTFS had
In comparison, VS2013 doesn't run on OS older than Windows 7. Meaning its quite safe to use symlinks in your case. Secondly, if you want a real quick/swift way to: copy only changed stuff and just DO IT!, use robocopy; it will mirror the directories and subdirectories pronto (comparable to Unix rsync utility). |
@tarruda I'm finding it difficult to justify the separate repos.
git submodule workflow is problematic. From the git-scm book:
The primary use case for submodules is to manage commits on a project you don't control. So adding this extra overhead for our group is hard to justify. |
Besides that, having docs and runtime in the same repo will make it easier
|
closed by #938 |
This implements waffle.io task #565.
I thought about using submodules but since the entire
build
folder is generated/copied I don't think it is a brilliant idea.Let me know if something still needs work.
Thanks for your great work.