Skip to content

Fixed git-subrepo and tests if set ff=only #640

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

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ help:

.PHONY: test
test:
@echo uname: '$(shell uname)'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you feel this would beneficial?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi and thanks for the question. Namely, while i was wrestling with github pipelines for Linux and Macos, i found this additional pipeline output very useful, especially in PR #639. So i thought i should leave it in this PR as well. There is no other value to it otherwise.

prove $(prove) $(test)

test-all: test docker-tests
Expand Down
2 changes: 1 addition & 1 deletion lib/git-subrepo
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ subrepo:pull() {
fi
else
o "Merge in changes from $refs_subrepo_fetch"
FAIL=false RUN git merge "$refs_subrepo_fetch"
FAIL=false RUN git merge --ff "$refs_subrepo_fetch"
if ! OK; then
say "The \"git merge\" command failed:"
say
Expand Down
57 changes: 57 additions & 0 deletions test/00-git-config.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/env bash

set -e

source test/setup

use Test::More

note "Define project-wide GIT setup for all tests"

# Get git-subrepo project top directory
PROJ_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )

if [ -z "${PROJ_DIR}" ] || [ "${HOME}" != "${PROJ_DIR}" ]; then
is "${HOME}" "${PROJ_DIR}" \
"To define project-wide GIT setup for all tests: HOME '${HOME}' should equal PROJ_DIR '${PROJ_DIR}'"
else

# Real GIT configuration for tests is set here:
rm -f "${PROJ_DIR}/.gitconfig"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not ok with removing the .gitconfig from a person's working directory.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi again,
i thought i made sure, that HOME is temporarily set to $PWD in 'test/setup' for the duration of running tests and only when git-subrepo's clone directory (PROJ_DIR) and HOME match, then rewrite tests-defined git configuration in PROJ_DIR.
regards, Samo

git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git config --global init.defaultBranch "master"
git config --global --add safe.directory "${PROJ_DIR}"
git config --global --add safe.directory "${PROJ_DIR}/.git"
git config --global pull.ff only
git config --global merge.ff only
git config --list

test-exists "${PROJ_DIR}/.gitconfig"

# Running tests depends on the whole project being git initialized.
# So, git initialize the project, if necessary.
if [ ! -d "${PROJ_DIR}/.git" ]; then
cd "${PROJ_DIR}"
git init .
git add .
git commit -a -m"Initial commit"
cd -
fi

test-exists "${PROJ_DIR}/.git/"

# Running tests depends on the whole project not being in a GIT detached HEAD state.
if ! git symbolic-ref --short --quiet HEAD &> /dev/null; then
git checkout -b test
fi

ok "$(
git symbolic-ref --short --quiet HEAD &> /dev/null
)" "Whole project is not in a GIT detached HEAD state"

fi

done_testing

teardown
2 changes: 1 addition & 1 deletion test/branch-rev-list-one-path.t
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ subrepo-clone-bar-into-foo
add-new-files bar/file3
add-new-files bar/file4
add-new-files bar/file5
git merge master
git merge --ff master
) >& /dev/null || die

test-exists "$OWNER/foo/bar/file1" "$OWNER/foo/bar/file2" "$OWNER/foo/bar/file3" "$OWNER/foo/bar/file4" "$OWNER/foo/bar/file5"
Expand Down
2 changes: 1 addition & 1 deletion test/branch-rev-list.t
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ subrepo-clone-bar-into-foo
add-new-files bar/file3
add-new-files bar/file4
add-new-files bar/file5
git merge master
git merge --ff master
) >& /dev/null || die

test-exists "$OWNER/foo/bar/file1" "$OWNER/foo/bar/file2" "$OWNER/foo/bar/file3" "$OWNER/foo/bar/file4" "$OWNER/foo/bar/file5"
Expand Down
7 changes: 7 additions & 0 deletions test/setup
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ source "$PWD"/.rc
# Get the location of this script
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

# Disable any GIT configuration set outside this 'git-subrepo' project.
# Real GIT configuration for tests is set through the first test
# (00-git-config.t).
export XDG_CONFIG_HOME=$PWD
export HOME=$PWD
export GIT_CONFIG_NOSYSTEM=1

BASHLIB=$(
find "$PWD"/ -type d -name bin -o -type d -name lib | tr '\n' ':'
)
Expand Down