I am trying to learn how to use git-p4 to clone a perforce depot with multiple branches to a git repo, push git changes back to p4, and pull p4 changes into a git repo. I have written a bash script that executes a scenario like this end-to- end. I am wondering if the commands I am using make sense or if they are missing the point of git-p4; is my approach absurdly cumbersome? In particular, should I really be checking out a remote branch, then creating a local branch from it to work with? I'm attached my bash script below. Chris Marshall #!/bin/bash # file_summary: git-p4 clone, illustrates importing p4 repo, git -> p4 changes, and p4 -> git changes rm -rf server workspace mkdir -p server workspace git-proj CWD=$(pwd) # start server cd server p4d -f -p 1666 & p4pid=$! disown $p4pid # cd ../workspace export P4PORT=1666 export P4CLIENT=testws export P4EDITOR=true # create client while ! p4 client -o > tmp.txt ; do sleep 1 done p4 client -i < tmp.txt # create some files in the mainline of a project mkdir -p proj1/main cd proj1/main echo "1" > f1 echo "2" >> f1 echo "3" >> f1 echo "4" >> f1 echo "5" >> f1 p4 add f1 p4 submit -d "initial checkin" sleep 2 # create a branch ( echo "Branch: main2br1" echo "View:" echo " //depot/proj1/main/... //depot/proj1/br1/..." ) | p4 branch -i p4 integrate -b main2br1 p4 submit -d "created br1 branch" sleep 2 # change main line p4 edit f1 echo "1" > f1 echo "2" >> f1 echo "3" >> f1 echo "4" >> f1 echo "4.1" >> f1 echo "5" >> f1 p4 submit -d "4.1 -> f1 on main line" f1 sleep 2 # change branch cd ../br1 p4 edit f1 echo "1" > f1 echo "2" >> f1 echo "2.1" >> f1 echo "3" >> f1 echo "4" >> f1 echo "5" >> f1 p4 submit -d "2.1 -> f1 on br1" f1 sleep 2 cd $CWD cd git-proj git-p4 clone //depot/proj1@all proj1 --detect-branches cd proj1 # checkout the head of the remote branch git checkout p4/proj1/br1 # create a local branch to work with git branch br1 git checkout br1 # make changes echo "1" > f1 echo "2" >> f1 echo "2.1" >> f1 echo "2.2" >> f1 echo "3" >> f1 echo "4" >> f1 echo "5" >> f1 # commit git commit -a -m "2.2 -> f1 on br1" # br1: submit back to perforce ( echo "y" ) | git-p4 submit # p4 2.3 -> f1 on br1 cd ${CWD}/workspace/proj1/br1 p4 edit f1 echo "1" > f1 echo "2" >> f1 echo "2.1" >> f1 echo "2.2" >> f1 echo "2.3" >> f1 echo "3" >> f1 echo "4" >> f1 echo "5" >> f1 p4 submit -d "2.3 -> f1 on br1" # pull them into git repo cd ${CWD}/git-proj/proj1 git-p4 sync //depot/proj1@all --detect-branches git merge p4/proj1/br1 # kill server kill $p4pid cd $CWD rm -rf workspace server git-proj -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html