From 493f39ffeb29c13e850d4df2cc1d4f25bbaa7bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morel=20Se=CC=81bastien?= Date: Sat, 15 Jan 2022 12:40:28 -0800 Subject: [PATCH] Make it work with M1 --- go.mod | 15 +++ go.sum | 16 +++ run-tests.sh | 315 +++++++++++++++++++++++---------------------- splitter/cache.go | 2 +- splitter/config.go | 2 +- splitter/result.go | 2 +- splitter/state.go | 2 +- splitter/utils.go | 2 +- 8 files changed, 198 insertions(+), 158 deletions(-) create mode 100644 go.mod create mode 100644 go.sum diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..6bc4a7c --- /dev/null +++ b/go.mod @@ -0,0 +1,15 @@ +module github.com/splitsh/lite + +go 1.17 + +require ( + github.com/boltdb/bolt v1.3.1 + github.com/libgit2/git2go v0.0.0-00010101000000-000000000000 +) + +require ( + golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c // indirect + golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 // indirect +) + +replace github.com/libgit2/git2go => ../../libgit2/git2go diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..7adedc5 --- /dev/null +++ b/go.sum @@ -0,0 +1,16 @@ +github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c h1:9HhBz5L/UjnK9XLtiZhYAdue5BVKep3PMmS2LuPDt8k= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/run-tests.sh b/run-tests.sh index 523d1ce..dcf67dd 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -3,165 +3,174 @@ set -e set -f +switchAsSammy() +{ + AUTHOR_DATE=$1 + COMMITTER_DATE=$2 + export GIT_AUTHOR_NAME="Sammy Cobol" + export GIT_AUTHOR_EMAIL="" + export GIT_AUTHOR_DATE="${AUTHOR_DATE}" + export GIT_COMMITTER_NAME="Fred Foobar" + export GIT_COMMITTER_EMAIL="" + export GIT_COMMITTER_DATE="${COMMITTER_DATE}" +} + +switchAsFred() { + AUTHOR_DATE=$1 + COMMITTER_DATE=$2 + export GIT_AUTHOR_NAME="Fred Foobar" + export GIT_AUTHOR_EMAIL="" + export GIT_AUTHOR_DATE="${AUTHOR_DATE}" + export GIT_COMMITTER_NAME="Sammy Cobol" + export GIT_COMMITTER_EMAIL="" + export GIT_COMMITTER_DATE="${COMMITTER_DATE}" +} + + +simpleTest() { + + rm -rf simple + mkdir simple + cd simple + git init > /dev/null + + switchAsSammy "Sat, 24 Nov 1973 19:01:02 +0200" "Sat, 24 Nov 1973 19:11:22 +0200" + echo "a" > a + git add a + git commit -m"added a" > /dev/null + + + switchAsFred "Sat, 24 Nov 1973 20:01:02 +0200" "Sat, 24 Nov 1973 20:11:22 +0200" + mkdir b/ + echo "b" > b/b + git add b + git commit -m"added b" > /dev/null + + switchAsFred "Sat, 24 Nov 1973 21:01:02 +0200" "Sat, 24 Nov 1973 21:11:22 +0200" + echo "aa" > a + git add a + git commit -m"updated a" > /dev/null + + switchAsFred "Sat, 24 Nov 1973 22:01:02 +0200" "Sat, 24 Nov 1973 22:11:22 +0200" + git rm a > /dev/null + git commit -m"updated a" > /dev/null + + switchAsFred "Sat, 24 Nov 1973 23:01:02 +0200" "Sat, 24 Nov 1973 23:11:22 +0200" + echo "bb" > b/b + git add b/ + git commit -m"updated b" > /dev/null + + GIT_SUBTREE_SPLIT_SHA1=`git subtree split --prefix=b/ -q` + GIT_SPLITSH_SHA1=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=b/ 2>/dev/null` + + if [ "$GIT_SUBTREE_SPLIT_SHA1" == "$GIT_SPLITSH_SHA1" ]; then + echo "Test #1 - OK ($GIT_SUBTREE_SPLIT_SHA1 == $GIT_SPLITSH_SHA1)" + else + echo "Test #1 - NOT OK ($GIT_SUBTREE_SPLIT_SHA1 != $GIT_SPLITSH_SHA1)" + exit 1 + fi + + GIT_SUBTREE_SPLIT_SHA1=`git subtree split --prefix=b/ -q d11e3f8e54fddd5bec458ac23837679a67a1508a` + GIT_SPLITSH_SHA1=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=b/ --commit=d11e3f8e54fddd5bec458ac23837679a67a1508a 2>/dev/null` + + if [ "$GIT_SUBTREE_SPLIT_SHA1" == "$GIT_SPLITSH_SHA1" ]; then + echo "Test #2 - OK ($GIT_SUBTREE_SPLIT_SHA1 == $GIT_SPLITSH_SHA1)" + else + echo "Test #2 - NOT OK ($GIT_SUBTREE_SPLIT_SHA1 != $GIT_SPLITSH_SHA1)" + exit 1 + fi + + cd ../ + +} + +mergeTest() { + rm -rf merge + mkdir -p merge/src + cd merge + git init > /dev/null + + switchAsSammy "Sat, 24 Nov 1973 19:01:01 +0200" "Sat, 24 Nov 1973 19:01:01 +0200" + echo -e "a\n\nb\n\nc\n\n" > src/foo + git add src/foo + git commit -m"init" > /dev/null + + git checkout -b branch1 2> /dev/null + + switchAsSammy "Sat, 24 Nov 1973 19:02:02 +0200" "Sat, 24 Nov 1973 19:02:02 +0200" + echo -e "a\n\nb\nchange 2\nc\n\n" > src/foo + git commit -a -m"change 2" > /dev/null + + switchAsSammy "Sat, 24 Nov 1973 19:02:02 +0200" "Sat, 24 Nov 1973 19:02:02 +0200" + echo -e "a\n\nb\nchange 2\nc\nchange 3\n" > src/foo + git commit -a -m"change 3" > /dev/null + + git checkout master 2> /dev/null + switchAsSammy "Sat, 24 Nov 1973 19:02:02 +0200" "Sat, 24 Nov 1973 19:02:02 +0200" + echo -e "a\nchange 1\nb\n\nc\n\n" > src/foo + git commit -a -m"change 1" > /dev/null + + git checkout -b branch2 2> /dev/null + switchAsSammy "Sat, 24 Nov 1973 19:02:02 +0200" "Sat, 24 Nov 1973 19:02:02 +0200" + echo -e "a\n\nb\nchange 2\nc\n\n" > src/foo + git commit -a -m"change 2" > /dev/null + + git checkout master 2> /dev/null + git checkout -b branch3 2> /dev/null + git merge branch1 --no-edit > /dev/null + git merge branch2 --no-edit -s ours > /dev/null + + GIT_SUBTREE_SPLIT_SHA1_2="a2c4245703f8dac149ab666242a12e1d4b2510d9" + GIT_SUBTREE_SPLIT_SHA1_3="ba0dab2c4e99d68d11088f2c556af92851e93b14" + GIT_SPLITSH_SHA1_2=`$GOPATH/src/github.com/splitsh/lite/lite --git="<2.8.0" --prefix=src/ 2>/dev/null` + GIT_SPLITSH_SHA1_3=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=src/ 2>/dev/null` + + if [ "$GIT_SUBTREE_SPLIT_SHA1_2" == "$GIT_SPLITSH_SHA1_2" ]; then + echo "Test #3 - OK ($GIT_SUBTREE_SPLIT_SHA1_2 == $GIT_SPLITSH_SHA1_2)" + else + echo "Test #3 - NOT OK ($GIT_SUBTREE_SPLIT_SHA1_2 != $GIT_SPLITSH_SHA1_2)" + exit 1 + fi + + if [ "$GIT_SUBTREE_SPLIT_SHA1_3" == "$GIT_SPLITSH_SHA1_3" ]; then + echo "Test #4 - OK ($GIT_SUBTREE_SPLIT_SHA1_3 == $GIT_SPLITSH_SHA1_3)" + else + echo "Test #4 - NOT OK ($GIT_SUBTREE_SPLIT_SHA1_3 != $GIT_SPLITSH_SHA1_3)" + exit 1 + fi + + cd ../ + +} + + +twigSplitTest() { + # run on some Open-Source repositories + if [ ! -d Twig ]; then + git clone https://github.com/twigphp/Twig > /dev/null + fi + GIT_SUBTREE_SPLIT_SHA1="ea449b0f2acba7d489a91f88154687250d2bdf42" + GIT_SPLITSH_SHA1=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=lib/ --origin=refs/tags/v1.24.1 --path=Twig --scratch 2>/dev/null` + + if [ "$GIT_SUBTREE_SPLIT_SHA1" == "$GIT_SPLITSH_SHA1" ]; then + echo "Test #5 - OK ($GIT_SUBTREE_SPLIT_SHA1 == $GIT_SPLITSH_SHA1)" + else + echo "Test #5 - NOT OK ($GIT_SUBTREE_SPLIT_SHA1 != $GIT_SPLITSH_SHA1)" + exit 1 + fi + + cd ../ +} + if [ ! -d splitter-lite-tests ]; then mkdir splitter-lite-tests fi cd splitter-lite-tests -rm -rf simple -mkdir simple -cd simple -git init > /dev/null - -export GIT_AUTHOR_NAME="Sammy Cobol" -export GIT_AUTHOR_EMAIL="" -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 19:01:02 +0200" -export GIT_COMMITTER_NAME="Fred Foobar" -export GIT_COMMITTER_EMAIL="" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 19:11:22 +0200" -echo "a" > a -git add a -git commit -m"added a" > /dev/null - -export GIT_AUTHOR_NAME="Fred Foobar" -export GIT_AUTHOR_EMAIL="" -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 20:01:02 +0200" -export GIT_COMMITTER_NAME="Sammy Cobol" -export GIT_COMMITTER_EMAIL="" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 20:11:22 +0200" -mkdir b/ -echo "b" > b/b -git add b -git commit -m"added b" > /dev/null - -export GIT_AUTHOR_NAME="Fred Foobar" -export GIT_AUTHOR_EMAIL="" -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 21:01:02 +0200" -export GIT_COMMITTER_NAME="Sammy Cobol" -export GIT_COMMITTER_EMAIL="" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 21:11:22 +0200" -echo "aa" > a -git add a -git commit -m"updated a" > /dev/null - -export GIT_AUTHOR_NAME="Fred Foobar" -export GIT_AUTHOR_EMAIL="" -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 22:01:02 +0200" -export GIT_COMMITTER_NAME="Sammy Cobol" -export GIT_COMMITTER_EMAIL="" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 22:11:22 +0200" -git rm a > /dev/null -git commit -m"updated a" > /dev/null - -export GIT_AUTHOR_NAME="Fred Foobar" -export GIT_AUTHOR_EMAIL="" -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 23:01:02 +0200" -export GIT_COMMITTER_NAME="Sammy Cobol" -export GIT_COMMITTER_EMAIL="" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 23:11:22 +0200" -echo "bb" > b/b -git add b/ -git commit -m"updated b" > /dev/null - -GIT_SUBTREE_SPLIT_SHA1=`git subtree split --prefix=b/ -q` -GIT_SPLITSH_SHA1=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=b/ --quiet` - -if [ "$GIT_SUBTREE_SPLIT_SHA1" == "$GIT_SUBTREE_SPLIT_SHA1" ]; then - echo "OK ($GIT_SUBTREE_SPLIT_SHA1 == $GIT_SUBTREE_SPLIT_SHA1)" -else - echo "OK ($GIT_SUBTREE_SPLIT_SHA1 != $GIT_SUBTREE_SPLIT_SHA1)" - exit 1 -fi - -GIT_SUBTREE_SPLIT_SHA1=`git subtree split --prefix=b/ -q bff8cdfaaf78a8842b8d9241ccfd8fb6e026f508...` -GIT_SPLITSH_SHA1=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=b/ --quiet --commit=bff8cdfaaf78a8842b8d9241ccfd8fb6e026f508` - -if [ "$GIT_SUBTREE_SPLIT_SHA1" == "$GIT_SUBTREE_SPLIT_SHA1" ]; then - echo "OK ($GIT_SUBTREE_SPLIT_SHA1 == $GIT_SUBTREE_SPLIT_SHA1)" -else - echo "OK ($GIT_SUBTREE_SPLIT_SHA1 != $GIT_SUBTREE_SPLIT_SHA1)" - exit 1 -fi - -cd ../ +simpleTest # Test #1 DOES work, Test #2 DO NOT work +mergeTest # Test #3 DO NOT work, Test #4 DO NOT work +twigSplitTest # Test #5 DOES work -rm -rf merge -mkdir -p merge/src -cd merge -git init > /dev/null -export GIT_AUTHOR_NAME="Sammy Cobol" -export GIT_AUTHOR_EMAIL="" -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 19:01:01 +0200" -export GIT_COMMITTER_NAME="Fred Foobar" -export GIT_COMMITTER_EMAIL="" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 19:01:01 +0200" -echo -e "a\n\nb\n\nc\n\n" > src/foo -git add src/foo -git commit -m"init" > /dev/null -git checkout -b branch1 2> /dev/null -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -echo -e "a\n\nb\nchange 2\nc\n\n" > src/foo -git commit -a -m"change 2" > /dev/null - -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -echo -e "a\n\nb\nchange 2\nc\nchange 3\n" > src/foo -git commit -a -m"change 3" > /dev/null - -git checkout master 2> /dev/null -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -echo -e "a\nchange 1\nb\n\nc\n\n" > src/foo -git commit -a -m"change 1" > /dev/null - -git checkout -b branch2 2> /dev/null -export GIT_AUTHOR_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -export GIT_COMMITTER_DATE="Sat, 24 Nov 1973 19:02:02 +0200" -echo -e "a\n\nb\nchange 2\nc\n\n" > src/foo -git commit -a -m"change 2" > /dev/null - -git checkout master 2> /dev/null -git checkout -b branch3 2> /dev/null -git merge branch1 --no-edit > /dev/null -git merge branch2 --no-edit -s ours > /dev/null - -GIT_SUBTREE_SPLIT_SHA1_2="a2c4245703f8dac149ab666242a12e1d4b2510d9" -GIT_SUBTREE_SPLIT_SHA1_3="ba0dab2c4e99d68d11088f2c556af92851e93b14" -GIT_SPLITSH_SHA1_2=`$GOPATH/src/github.com/splitsh/lite/lite --git="<2.8.0" --prefix=src/ --quiet` -GIT_SPLITSH_SHA1_3=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=src/ --quiet` - -if [ "$GIT_SUBTREE_SPLIT_SHA1_2" == "$GIT_SUBTREE_SPLIT_SHA1_2" ]; then - echo "OK ($GIT_SUBTREE_SPLIT_SHA1_2 == $GIT_SUBTREE_SPLIT_SHA1_2)" -else - echo "OK ($GIT_SUBTREE_SPLIT_SHA1_2 != $GIT_SUBTREE_SPLIT_SHA1_2)" - exit 1 -fi - -if [ "$GIT_SUBTREE_SPLIT_SHA1_3" == "$GIT_SUBTREE_SPLIT_SHA1_3" ]; then - echo "OK ($GIT_SUBTREE_SPLIT_SHA1_3 == $GIT_SUBTREE_SPLIT_SHA1_3)" -else - echo "OK ($GIT_SUBTREE_SPLIT_SHA1_3 != $GIT_SUBTREE_SPLIT_SHA1_3)" - exit 1 -fi - -cd ../ - -# run on some Open-Source repositories -if [ ! -d Twig ]; then - git clone https://github.com/twigphp/Twig > /dev/null -fi -GIT_SUBTREE_SPLIT_SHA1="ea449b0f2acba7d489a91f88154687250d2bdf42" -GIT_SPLITSH_SHA1=`$GOPATH/src/github.com/splitsh/lite/lite --prefix=lib/ --origin=refs/tags/v1.24.1 --path=Twig --quiet --scratch` - -if [ "$GIT_SUBTREE_SPLIT_SHA1" == "$GIT_SUBTREE_SPLIT_SHA1" ]; then - echo "OK ($GIT_SUBTREE_SPLIT_SHA1 == $GIT_SUBTREE_SPLIT_SHA1)" -else - echo "OK ($GIT_SUBTREE_SPLIT_SHA1 != $GIT_SUBTREE_SPLIT_SHA1)" - exit 1 -fi - -cd ../ diff --git a/splitter/cache.go b/splitter/cache.go index ad53d94..740b4bf 100644 --- a/splitter/cache.go +++ b/splitter/cache.go @@ -9,7 +9,7 @@ import ( "time" "github.com/boltdb/bolt" - "github.com/libgit2/git2go" + git "github.com/libgit2/git2go" ) type cache struct { diff --git a/splitter/config.go b/splitter/config.go index 72972db..ca1d595 100644 --- a/splitter/config.go +++ b/splitter/config.go @@ -6,7 +6,7 @@ import ( "sync" "github.com/boltdb/bolt" - "github.com/libgit2/git2go" + git "github.com/libgit2/git2go" ) // Prefix represents which paths to split diff --git a/splitter/result.go b/splitter/result.go index 9548c62..c3f7aa7 100644 --- a/splitter/result.go +++ b/splitter/result.go @@ -4,7 +4,7 @@ import ( "sync" "time" - "github.com/libgit2/git2go" + git "github.com/libgit2/git2go" ) // Result represents the outcome of a split diff --git a/splitter/state.go b/splitter/state.go index d8f342e..f7d04a9 100644 --- a/splitter/state.go +++ b/splitter/state.go @@ -8,7 +8,7 @@ import ( "sync" "time" - "github.com/libgit2/git2go" + git "github.com/libgit2/git2go" ) type state struct { diff --git a/splitter/utils.go b/splitter/utils.go index 651b747..f500999 100644 --- a/splitter/utils.go +++ b/splitter/utils.go @@ -7,7 +7,7 @@ import ( "regexp" "strings" - "github.com/libgit2/git2go" + git "github.com/libgit2/git2go" ) var messageNormalizer = regexp.MustCompile(`\s*\r?\n`)