SMOLNET PORTAL home about changes

Switching untracked files in Git with branches

Up a Level



Setup



Pull out the variables we care about.


previous=$1 new=$2 branch=$3

For debugging purposes, we write out a file to the temp location.


date > $TEMP/install-branch-local-config.txt echo “previous $previous” >> $TEMP/install-branch-local-config.txt echo “new $new” >> $TEMP/install-branch-local-config.txt echo “branch $branch” >> $TEMP/install-branch-local-config.txt


Branch Naming



Figure out which branch we're going to be changing to. This is somewhat of an


inelegant method that just cycles through the heads (which contains a hash)


and figures out which branch head (based on the name). If there are multiple


heads for that commit, it will pick a random one. Likewise, if a specific


revision is checked out, this will assume “none”.


new_branch_name=“none”

for i in .git/refs/heads/* do hash=$(cat $i)

if [ "z$hash" = "z$new" ]
then
    new_branch_name=$(basename "$i")
    echo "trying new $i" >> $TEMP/install-branch-local-config.txt
fi


done

Figure out which branch we were on


old_branch_name=“none”

for i in .git/refs/heads/* do hash=$(cat $i)

if [ "z$hash" = "z$previous" ]
then
    old_branch_name=$(basename "$i")
    echo "trying previous $i" >> $TEMP/install-branch-local-config.txt
fi


done


Perform the manipulation



Figure out which files you want to swap around. We are using Local.config while


storing the old versions in Local-branchName.config. As we switch branches, we


move the files around.



In addition, Local-*.config is added to .git/info/exclude as a local change.


web_folder=“Website” local_config="$web_folder/Local-$new_branch_name.config" old_local_config="$web_folder/Local-$old_branch_name.config"

Report the files we're dealing with.


echo >> $TEMP/install-branch-local-config.txt echo “branch name $new_branch_name” >> $TEMP/install-branch-local-config.txt echo “web folder $web_folder” >> $TEMP/install-branch-local-config.txt echo “local config $local_config” >> $TEMP/install-branch-local-config.txt

Save off the old local config. We make sure we have a valid branch


then move Local.config into Local-branchName.config.


if [ “z$old_branch_name” != “znone” ] then if [ -f $web_folder/Local.config ] then cp $web_folder/Local.config $old_local_config fi fi

See if we have a new local config based on the branch, then move


it into the local config.


if [ -f $local_config ] then echo “found a file $local_config” >> $TEMP/install-branch-local-config.txt cp $local_config $web_folder/Local.config else echo “using standard config” >> $TEMP/install-branch-local-config.txt rm -f $web_folder/Local.config fi

Always touch Web.config to force IIS to restart


touch $web_folder/Web.config


Metadata


Categories:

Programming


Footer


Below are various useful links within this site and to related sites (not all have been converted over to Gemini).

Now
Contact
Biography
Bibliography
Support


Fiction
Fedran (fedran.com)
Coding (https://mfgames.com)
The Moonfires (https://moonfire.us)


Categories
Tags


Privacy
Colophon
License


Mailing List (https://lists.typewriter.press)


https://d.moonfire.us/blog/2013/10/08/switching-untracked-files-in-git-with-branches/ (https://d.moonfire.us)
Response: 20 (Success), text/gemini
Original URLgemini://d.moonfire.us/blog/2013/10/08/switching-untracke...
Status Code20 (Success)
Content-Typetext/gemini; charset=utf-8; lang=en-US