Server IP : 180.180.241.3 / Your IP : 216.73.216.127 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Git/bin/ |
Upload File : |
#!/bin/sh # reencode file names in git tree objects from Windows system encoding to UTF-8 usage() { echo "WARNING this script is not intended as a full-fledged and fool-proof migration utility, but rather as a proof of concept or collection of examples. Use at your own risk. In particular, the script doesn't check or fix any non-ascii names in config files (such as .git/config, .gitignore or .gitmodules). For specific migration tasks, some of the commands in this script may require tweaking. Usage: recodetree <command> recodetree check Checks git repository for non-ascii file names. recodetree preview Same as 'check', but prints file names as if converted from cp$(getcp) to UTF-8. recodetree head Converts the current HEAD from cp$(getcp) to UTF-8. Does not commit, use git status to check results first. recodetree history Converts entire repository history from cp$(getcp) to UTF-8. WARNING: this rewrites the history of the repository. - Make a BACKUP copy of the repository before using this! - Read 'git help filter-branch' for implications of rewriting history." } check() { # use fast-export to dump all file names in the history git fast-export --no-data --signed-tags=strip --tag-of-filtered-object=drop --all | # use awk to filter for non-ascii names awk --posix '/^M [0-9]{6} [0-9a-f]{40} .*[\200-\377]/{print substr($0,51);}' } recode() { # convert from system encoding to UTF-8 iconv -c -f cp$(getcp) -t utf-8 } recode_tree() { # clear the index git rm -f -r -q --cached --ignore-unmatch \* # list specified commit, reencode and add to index git ls-tree -z -r $1 | recode | git update-index -z --index-info } case $1 in check) check ;; preview) check | recode ;; head) recode_tree HEAD ;; history) git filter-branch --index-filter 'recodetree filter' -- --all ;; filter) # used internally by recodetree history recode_tree $GIT_COMMIT ;; *) usage ;; esac