example of git-p4 usage: checking out remote branches?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux