-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcopy_git_commits.sh
executable file
·65 lines (52 loc) · 1.33 KB
/
copy_git_commits.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# Copyright 2020 yerlibilgin
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
function replicate(){
olddir=$1
newdidr=$2
hash=$3
message=$4
(cd $olddir
pwd
ls
git checkout $hash
cp -r * ../$newdir
mv .git tmpgit
cp -r .* ../$newdir
mv tmpgit .git
cd ../$newdir
git add .
git commit -m "${message}"
)
}
function copyGitCommits(){
declare -a commits=("hash1 message 1"
"hash2 message 2"
"hash3 message 3"
"hash4 message 4"
"hash5 message 5")
##assume old and new dir are siblings
olddir="dir1"
newdir="dir2"
rm -fr $newdir && mkdir -p $newdir
(cd $newdir && git init)
for commit in "${commits[@]}"
do
hash=${commit%% *}
message=${commit#* }
echo HASH: $hash
echo MESSAGE: $message
replicate $olddir $newdir $hash "${message}"
done
}