diff --git a/pom.xml b/pom.xml
index 09e196ffd5..d06dec2de3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,37 +115,42 @@
maven-resources-plugin
2.5
-
- copy-resources
- validate
-
- copy-resources
-
-
- ${proto.folder}
-
-
- ${basedir}/kvproto/include
-
- **/gogoproto/**
- **/*.proto
-
-
-
- ${basedir}/kvproto/proto
- true
-
-
- ${basedir}/raft-rs/proto
- true
-
-
- ${basedir}/tipb/proto
- true
-
-
-
-
+
+ copy-resources
+ validate
+
+ copy-resources
+
+
+ ${proto.folder}
+
+
+ ${basedir}/kvproto/include
+
+ **/gogoproto/**
+
+
+
+ ${basedir}/kvproto/include
+
+ *.proto
+
+
+
+ ${basedir}/kvproto/proto
+ true
+
+
+ ${basedir}/raft-rs/proto/proto
+ true
+
+
+ ${basedir}/tipb/proto
+ true
+
+
+
+
diff --git a/scripts/proto.sh b/scripts/proto.sh
index 49c31ac1d4..22aaee1c3d 100755
--- a/scripts/proto.sh
+++ b/scripts/proto.sh
@@ -14,20 +14,26 @@
# limitations under the License.
#
+kvproto_hash=a4759dfe3753ce136d252578340bb2b33633ccfa
+
+raft_rs_hash=14f007b443935aef51cb161c5b368b54fc8ed176
+
+tipb_hash=c0b8f1a8c8395c319049600dc0efd278f1e26a0d
+
if [ -d "kvproto" ]; then
- cd kvproto; git pull origin master; cd ..
+ cd kvproto; git fetch -p; git checkout ${kvproto_hash}; cd ..
else
- git clone https://github.com/pingcap/kvproto
+ git clone https://github.com/pingcap/kvproto; cd kvproto; git checkout ${kvproto_hash}; cd ..
fi
if [ -d "raft-rs" ]; then
- cd raft-rs; git pull origin master; cd ..
+ cd raft-rs; git fetch -p; git checkout ${raft_rs_hash}; cd ..
else
- git clone https://github.com/pingcap/raft-rs
+ git clone https://github.com/pingcap/raft-rs; cd raft-rs; git checkout ${raft_rs_hash}; cd ..
fi
if [ -d "tipb" ]; then
- cd tipb; git pull origin master; cd ..
-else
- git clone https://github.com/pingcap/tipb
+ cd tipb; git fetch -p; git checkout ${tipb_hash}; cd ..
+else
+ git clone https://github.com/pingcap/tipb; cd tipb; git checkout ${tipb_hash}; cd ..
fi