-
Notifications
You must be signed in to change notification settings - Fork 11
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
svn externals replacement #6
Comments
Seems w/o sparse checkout support (https://git-scm.com/docs/git-sparse-checkout) or w/o a custom method of checkout w/o builtin recursion, there is currently no way to use recursed submodules ( Conclusion
Side issues
But issues with the GitExtensions can be ignored. |
Can you prepare a minimal public repository structure that reproduces all the issues? So I can check them on my side |
First simple tests: #11 (comment) |
Please try https://github.com/chronoxor/gil-test1-root
|
That is a different project. In mine case A has B as a dependency, when B has A. There is no 3d one. And this is not recursive in SVN, because were taken sudirectories, not the externals. Now I want to port SVN into GIT. And that is wrong, _externals must exist, there is no sense to ignore it.
Externals of A must exist, when externals of B in A may not. The same for |
You can have tree-based projects dependency explicitly:
If you want to have cycles projects dependencies, you have to place them under some root project and put root .gitlinks in it:
That's how gil tool works now |
You have used |
Linked externals should be ignored if you commit in the current repository with |
The following commands are working for the whole linked structure:
|
My common workflow is to make changes in several linked projects, then go to the root and make global commit with
|
I don't like this method of committing. I use GitExtensions to make a commit and push. This is a convenient way to commit anything in git. First of all you see all unstaged items in the GUI and can run commands on them like the reset directly on selected items in unstaged area. At second, you see the difference file for each item from the changeset. At third, you have access to the history of commit messages and can amend with last commit message restore. Plus all other options and advantages. With the |
How you suppose to work like this? I have to maintain 2 working copies at the same time for each project? I have to copy all the local changes between 2 projects with and w/o externals before commit them. This is quite a ridiculous. By the way, the sparse checkout automatically does ignore filtered paths (https://git-scm.com/docs/git-sparse-checkout):
So if you would implement the sparse checkout then, it is better to convert Here is example of the sparse checkout in the vcstool: dirk-thomas/vcstool#218 |
As your projects are linked with a symbolic link, you have only one place to update and commit (e.g. in A, or B->A which points to the same place as A). |
I also use TortoiseGit sometimes to review & commit, but you have to do it separately for each project you change (e.g. A and B). |
I want a single place to commit from and I want to observe the dependencies at the same time. Better to back off the recursion at all so the links won't raise the problem.
That was a bit bad idea because there is many git tools and IDEs which does call to git directly, so the script does interfere with them and interrupts the usage. I have to switch to GUI/tools and back to the script to make a simple commit or pull. PS: I've found another closest solution and updated the comment: #6 (comment) |
Just for instance. I have tried to promote one of the GitExt side issues and this is what they said: gitextensions/gitextensions#10642 (comment)
|
Just for instance. Have sent questions into git folks mailing list: |
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
* changed: .externals: added usage of `vcstool` fork (https://github.com/plusone-robotics/vcstool) project to port `svn:externals` dependencies from svn into git * changed: .gitlinks: removed usage of `git-links` (https://github.com/chronoxor/gil) project because found as not acceptable for usage: chronoxor/gil#6, https://lore.kernel.org/git/[email protected] * changed: README.md: readme update
In svn you can reference a subdirectory in an external:
/project-X/_externals
/project-A/_externals
.gitlinks
in project-X:.gitlinks
in project-A:But how to checkout not all directories in each external (sparse checkout)?
The text was updated successfully, but these errors were encountered: