Re: newbie with broken workflow
- From
Daniel Barkalow <barkalow@iabervon.org>
- Date
- Apr 4, 2008, 00:05 UTC
- Message-ID
- <alpine.LNX.1.00.0804031957010.19665@iabervon.org>
- In-Reply-To
- <9d27c6320804031445p3fc80115n59218673dd587795@mail.gmail.com>
On Thu, 3 Apr 2008, James Kingston wrote:
Show 44 quoted lines
> I am a few days into git and have settled into a workflow that is > apparently very broken, and I'd appreciate it if someone with a more > experienced eye can point out where I went wrong. > > The official SCM tool at my work is ClearCase Remote Client, and it's > vile... pessimistic locking, huge bureaucracy just to create a branch > (I love experimental branches), no licenses for the native client. My > plan was to use git (Git-1.5.4-preview20080202.exe) to track my > clearcase view directory, and push changes into that repo when > convenient from my working directory repo (clearcase makes > non-checkedout files read only, which makes working directly in the > view directory Ugly). > > Here is a timeline of how I tried to do this: > > /c> cd /c/cc > /c/cc> git init > /c/cc> git add * > /c/cc> git commit > /c/cc> mkdir /c/wd > /c/cc> cd /c/wd > /c/wd> git clone /c/cc > /c/wd> cd cc/ > /c/wd/cc> ls > /c/wd/cc> vi config.ini > /c/wd/cc> git checkout -b config_changes > /c/wd/cc> git diff > /c/wd/cc> git add config.ini > /c/wd/cc> git commit > /c/wd/cc> git checkout master > /c/wd/cc> git merge config_changes > /c/wd/cc> vi config.ini > /c/wd/cc> git push /c/cc > /c/wd/cc> cd /c/cc > /c/cc> vi config.ini # doesn't show the change made in experimental > branch, though gitk shows the patch > /c/cc> git status # says that config.ini has been modified > /c/cc> git add config.ini # grasping as straws > /c/cc> git commit # changes nothing, as far as I can tell > /c/cc> git reset --hard #still changes nothing. My diffs are there > in the log, just out of reach > > I have much to learn, but in the short term I just need to get those > changes into clearcase so QA can pull them
So you should actually do:
/c/wd/cc> cd /c/cc /c/cc> git pull ../wd/cc
But wouldn't that fail, because the files are read-only?
I think you'd do:
/c/cc> git fetch ../wd/cc /c/cc> git diff --name-only HEAD FETCH_HEAD
Tell ClearCase you want to edit those files
/c/cc> git merge FETCH_HEAD
Commit your ClearCase stuff
Also, IIRC, the sort of normal workflow for dealing with foreign SCMs that need local working directories is actually to put them in .git/info/something, and use git diff to get the changes in each of your git commits and git apply (using it like "patch", but smarter) to modify the working directory.
-Daniel *This .sig left intentionally blank*