You can always peek under the hood to see the Git commands we are using. This is helpful if something strange is happening or if you are just curious. :)
To open the Git output window, run View > Output and select Git from the dropdown.
git submodule deinit <asubmodule>
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>
deinit
Un-register the given submodules, i.e. remove the whole submodule.$name
section from .git/config together with their work tree.
Further calls to git submodule update, git submodule foreach and git submodule sync will skip any unregistered submodules until they are initialized again, so use this command if you don’t want to have a local checkout of the submodule in your work tree anymore.
If you really want to remove a submodule from the repository and commit that use git rminstead.
If --force is specified, the submodule’s work tree will be removed even if it contains local modifications.
Since the “account.json” SourceTree search did not help me much, below are the steps for installing SourceTree for Windows 3.x on an air-gapped machine.
have both the target air-gapped system, and a system having internet access available
Steps:
Run Process Explorer on the target system
Run the SourceTreeSetup installer on the target system
When registering, click on the “BitBucket” button on the target system
In Process Explorer, find out the web browser process that the setup kicks off and grab the command-line, which looks like this when running Chrome as default browser: "%LocalAppData%\Google\Chrome\Application\chrome.exe" -- "https://bitbucket.org/site/oauth2/authorize?response_type=code&client_id=123456789012345678&state=authenticated&redirect_uri=http://localhost:34106/"
Copy the URL bit https://bitbucket.org/site/oauth2/authorize?response_type=code&client_id=123456789012345678&state=authenticated&redirect_uri=http://localhost:34106/ over and paste it on a machine that has internet access
Logon, and follow the steps until the URL look like this: http://localhost:34106/?state=authenticated&code=876543210987654321
Copy that URL over to a web-browser on the target system and execute it
Finish the installation steps on the target system
Now a new file should be in %LocalAppData%\Atlassian\SourceTree\accounts.json suitable for SourceTree 3.x. In the future you might be lucky enough to copy that to a target system before installing.
I was not so lucky, because my accounts.json was SourceTree 2.x based, which the SourceTree 3.x setup modifies, but is still not happy with.
Note these number differ on each request:
123456789012345678 is a base64 encoded request ID
876543210987654321 is a base64 encoded response ID
34106 is a random TCP port where the installer is listening on to get the authentication information
Fiddler
Initially, I had Fiddler steps in the above, but found out I did not need those. One thing that complicated this is that Fiddler had been removed from Chocolatey for a while, so I was not sure it would stay as a product:
I like that you can add git repositories inside eachother using git submodule add but when it’s time to say goodbye to a submodule you need some convoluted statements. So I really wish one day there will be git submodule remove.
Until then, these links will help you to get rid of a git submodule:
Besides the very good point it raises about DVCS (Git, Mercurial and most other DVCSes treat the whole state of the repository as the atom) it also indicates quite a few shortcomings:
most people hardly ever need the full history to be off-line
having the full history means repositories get huge in size, including your off-line clone
pseudo-solutions for huge repository sizes – like git-LFS or git-annex – are a no-go because now you loose atomicity
huge repositories in file or commit counts make them slow, especially when the trees are deep
splitting up repositories isn’t a good idea either because again: you loose atomicity
all DVCS are hard, not just git, because they are distributed and full of features
the workflow for submitting pull requests is quite a bit longer than submitting a patch, even though merging in a DVCS can be hard too (despite atomicity which does help a lot for DVCS systems)
I see many other advantages of DVCS systems (for instance that you only need to locally have the branches you are interested in, way better tooling for DVCS systems, ditto for sites hosting DVCS), but it always a good thing to know the weak spots of what you are working with.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters