name: Symlink Test
on:
# trigger on push to any branch
push:
branches-ignore:
- 'release/*'
tags-ignore:
- '*'
jobs:
# try to create and push the symlink
symlink-test:
name: Symlink Test
runs-on: windows-latest
steps:
# checkout the code
- name: Checkout code
uses: actions/checkout@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
# symlink via bash
# this does *not* create a symlink, but a directory
#- name: Symlink Bash
# shell: bash
# run: |
# if ! [ -L bang ]; then
# ln -s duh bang
# ls -l
# git config --global user.email "stephan@REDACTED.com"
# git config --global user.name "Stephan"
# git config --global core.symlinks "true"
# git add bang
# git commit -m "created symlink"
# fi
# symlink via pwsh
# this creates a 'bang' file that contains 'duh'
# on local machine, it fails 'New-Item: Administrator privilege required for this operation.'
#
# update: it creates *something* that is listed as a directory in the log,
# and that GitHub represents as a link, so it has to be a link, but when
# I check the thing out, it's a file
# because Windows won't create the link but on Linux, it's checked out as a link
#
#- name: Symlink Pwsh
# shell: pwsh
# run: |
# if (! (test-path bang)) {
# New-Item -ItemType SymbolicLink -Name bang -Target duh
# write-output "DIR:"
# ls .
# write-output "DIR:"
# ls bang
# git config --global user.email "stephan@REDACTED.com"
# git config --global user.name "Stephan"
# git config --global core.symlinks "true"
# git add bang
# git commit -m "created symlink"
# }
# see
# this just creates the symlink in Git - works on Windows
# BUT will be checked out as a file and we don't care
- name: Symlink Git
shell: bash
run: |
if ! [ -f "bang" ]; then
git update-index --add --cacheinfo 120000 "$(echo "duh" | git hash-object -w --stdin)" "bang"
git config --global user.email "stephan@REDACTED.com"
git config --global user.name "Stephan"
git commit -m "created symlink"
fi
# push changes back
- name: Push
shell: bash
run: git push