mirror of
				https://github.com/gfwlist/gfwlist.git
				synced 2025-11-04 08:37:27 +00:00 
			
		
		
		
	c2NyaXB0Cg==
This commit is contained in:
		
							parent
							
								
									b674b5e214
								
							
						
					
					
						commit
						7552cb981c
					
				@ -9,7 +9,7 @@
 | 
				
			|||||||
#   Update "Last Modified" time;
 | 
					#   Update "Last Modified" time;
 | 
				
			||||||
#   Update "Checksum";
 | 
					#   Update "Checksum";
 | 
				
			||||||
#   Commit your changes to local git repository;
 | 
					#   Commit your changes to local git repository;
 | 
				
			||||||
#   Commit your encoded changes to remote svn repository with encoded log.
 | 
					#   Commit your encoded changes to remote svn server with encoded log.
 | 
				
			||||||
# Usage:
 | 
					# Usage:
 | 
				
			||||||
#   Initialize:
 | 
					#   Initialize:
 | 
				
			||||||
#     $svn checkout https://autoproxy-gfwlist.googlecode.com/svn/trunk/ gfwList --username your-google-user-name
 | 
					#     $svn checkout https://autoproxy-gfwlist.googlecode.com/svn/trunk/ gfwList --username your-google-user-name
 | 
				
			||||||
@ -37,23 +37,8 @@ do
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
svn update &&
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ "$(git diff)" == "" ]; then
 | 
					 | 
				
			||||||
  echo "not modified.";
 | 
					 | 
				
			||||||
  exit 0;
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# get self last changed revision number
 | 
					 | 
				
			||||||
oriLang=$LANG; export LANG="en_US";
 | 
					 | 
				
			||||||
curRevNum=$( svn info | gawk '/^Last Changed Rev:/ { print $4 }' );
 | 
					 | 
				
			||||||
export LANG=$oriLang;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# save local modification
 | 
					 | 
				
			||||||
git diff > temp.patch &&
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# get formated author and log information
 | 
					# get formated author and log information
 | 
				
			||||||
log=$(svn log -r $curRevNum:HEAD) &&
 | 
					log=$(svn log -r BASE:HEAD) &&
 | 
				
			||||||
log=$(echo $log | gawk -v RS='------------------------------------------------------------------------'\
 | 
					log=$(echo $log | gawk -v RS='------------------------------------------------------------------------'\
 | 
				
			||||||
  'NR > 2 { if (NF > 10) printf "%s:%s;", $3, $NF; }' ) &&
 | 
					  'NR > 2 { if (NF > 10) printf "%s:%s;", $3, $NF; }' ) &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -80,26 +65,44 @@ done
 | 
				
			|||||||
# replace last ";" symbol to "."
 | 
					# replace last ";" symbol to "."
 | 
				
			||||||
convertedLog=$( echo $convertedLog | sed 's/;$/\./' ) &&
 | 
					convertedLog=$( echo $convertedLog | sed 's/;$/\./' ) &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# modified by others, commit to local git repository.
 | 
				
			||||||
if [ "$convertedLog" != "" ]; then
 | 
					if [ "$convertedLog" != "" ]; then
 | 
				
			||||||
  # modified by others, commit to local repository.
 | 
					  svn update &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # save local modification
 | 
				
			||||||
 | 
					  git diff > temp.patch &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # log format: author1:"message1"; author2:"message2"...
 | 
					  # log format: author1:"message1"; author2:"message2"...
 | 
				
			||||||
  base64 -d gfwlist.txt > list.txt &&
 | 
					  base64 -d gfwlist.txt > list.txt &&
 | 
				
			||||||
  git commit -a -m "$convertedLog" &&
 | 
					  git commit -a -m "$convertedLog" &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # apply local modification
 | 
					  # apply local modification
 | 
				
			||||||
  git apply temp.patch;
 | 
					  if [ -s temp.patch ]; then git apply temp.patch; fi &&
 | 
				
			||||||
 | 
					  rm temp.patch;
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$(git diff)" == "" ]; then
 | 
				
			||||||
 | 
					  echo "list.txt not modified.";
 | 
				
			||||||
 | 
					  exit 0;
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ "$*" == "" ]; then
 | 
				
			||||||
 | 
					  echo "Empty log, please say something about this modification.";
 | 
				
			||||||
 | 
					  exit 1;
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# update date and checksum
 | 
					# update date and checksum
 | 
				
			||||||
sed -i s/"Last Modified:.*$"/"Last Modified:  $(date -R -r list.txt)"/ list.txt &&
 | 
					sed -i s/"Last Modified:.*$"/"Last Modified:  $(date -R -r list.txt)"/ list.txt &&
 | 
				
			||||||
./addChecksum.pl list.txt &&
 | 
					./addChecksum.pl list.txt &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# save self change to git
 | 
					# save self change to git. exit directly if conflicting.
 | 
				
			||||||
git commit -a -m "$*" &&
 | 
					git commit -a -m "$*" &&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# commit to remote svn server
 | 
					# commit to remote svn server
 | 
				
			||||||
base64 list.txt > gfwlist.txt &&
 | 
					base64 list.txt > gfwlist.txt &&
 | 
				
			||||||
svn ci gfwlist.txt -m $( echo "$*" | base64 -w 0) &&
 | 
					(
 | 
				
			||||||
 | 
					  # "svn ci" and "git commit" are atomic operations
 | 
				
			||||||
rm temp.patch;
 | 
					  svn ci gfwlist.txt -m $( echo "$*" | base64 -w 0) ||
 | 
				
			||||||
 | 
					  # "svn ci" may be failed because of connection problems.
 | 
				
			||||||
 | 
					  git reset HEAD^;
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user