Browse Source
Currently, in the event that a submodule's upstream URL changes, users have to manually alter the URL in the .gitmodules file then run `git submodule sync`. Let's make that process easier. Teach submodule the set-url subcommand which will automatically change the `submodule.$name.url` property in the .gitmodules file and then run `git submodule sync` to complete the process. Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint


4 changed files with 113 additions and 2 deletions
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2019 Denton Liu |
||||
# |
||||
|
||||
test_description='Test submodules set-url subcommand |
||||
|
||||
This test verifies that the set-url subcommand of git-submodule is working |
||||
as expected. |
||||
' |
||||
|
||||
TEST_NO_CREATE_REPO=1 |
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'submodule config cache setup' ' |
||||
mkdir submodule && |
||||
( |
||||
cd submodule && |
||||
git init && |
||||
echo a >file && |
||||
git add file && |
||||
git commit -ma |
||||
) && |
||||
mkdir super && |
||||
( |
||||
cd super && |
||||
git init && |
||||
git submodule add ../submodule && |
||||
git commit -m "add submodule" |
||||
) |
||||
' |
||||
|
||||
test_expect_success 'test submodule set-url' ' |
||||
# add a commit and move the submodule (change the url) |
||||
( |
||||
cd submodule && |
||||
echo b >>file && |
||||
git add file && |
||||
git commit -mb |
||||
) && |
||||
mv submodule newsubmodule && |
||||
|
||||
git -C newsubmodule show >expect && |
||||
( |
||||
cd super && |
||||
test_must_fail git submodule update --remote && |
||||
git submodule set-url submodule ../newsubmodule && |
||||
grep -F "url = ../newsubmodule" .gitmodules && |
||||
git submodule update --remote |
||||
) && |
||||
git -C super/submodule show >actual && |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue