mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
| #!/usr/bin/python
 | |
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| # When we make a hotfix, we need to reverse integrate our hotfix back into
 | |
| # master. After commiting to master, this script audits that all tags have been
 | |
| # reverse integrated.
 | |
| import subprocess
 | |
| from distutils.version import LooseVersion
 | |
| import logging
 | |
| 
 | |
| #logging.basicConfig(level=logging.DEBUG)
 | |
| 
 | |
| def is_on_master():
 | |
|     output = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"]).strip()
 | |
|     logging.debug("branch output: %s" % output)
 | |
|     return output == "master"
 | |
| 
 | |
| def main():
 | |
|     if not is_on_master():
 | |
|         # Don't interfere while on a feature or hotfix branch
 | |
|         logging.debug("not on master branch")
 | |
|         return
 | |
| 
 | |
|     logging.debug("on master branch")
 | |
| 
 | |
|     unmerged_tags_output = subprocess.check_output(["git", "tag", "--no-merged", "master"])
 | |
|     unmerged_tags = [line.strip() for line in unmerged_tags_output.split("\n") if len(line) > 0]
 | |
| 
 | |
|     logging.debug("All unmerged tags: %s" % unmerged_tags)
 | |
| 
 | |
|     # Before this point we weren't always reverse integrating our tags.  As we
 | |
|     # audit old tags, we can ratchet this version number back.
 | |
|     epoch_tag="2.21.0"
 | |
| 
 | |
|     logging.debug("ignoring tags before epoch_tag: %s" % epoch_tag)
 | |
| 
 | |
|     tags_of_concern = [tag for tag in unmerged_tags if LooseVersion(tag) > LooseVersion(epoch_tag)]
 | |
| 
 | |
|     # Don't reverse integrate tags for adhoc builds
 | |
|     tags_of_concern = [tag for tag in tags_of_concern if "adhoc" not in tag]
 | |
| 
 | |
|     tags_to_ignore = [
 | |
|         '2.23.3.0',
 | |
|         '2.23.3.1',
 | |
|         '2.26.0.6',
 | |
|         '2.26.0.7',
 | |
|         '2.26.0.15',
 | |
|         '2.26.0.16',
 | |
|         '2.29.0.7',
 | |
|         '2.29.0.8',
 | |
|         '2.29.0.9',
 | |
|         '2.29.0.11',
 | |
|         '2.30.0.0',
 | |
|         '2.30.0.1',
 | |
|         '2.30.2.0',
 | |
|         '3.0',
 | |
|         '3.0.1',
 | |
|         '3.0.2',
 | |
|         # These tags were from unmerged branches investigating an issue that only reproduced when installed from TF.
 | |
|         '2.34.0.10', '2.34.0.11', '2.34.0.12', '2.34.0.13', '2.34.0.15', '2.34.0.16', '2.34.0.17', '2.34.0.18', '2.34.0.19', '2.34.0.20', '2.34.0.6', '2.34.0.7', '2.34.0.8', '2.34.0.9',
 | |
|         '2.37.3.0',
 | |
|         '2.37.4.0',
 | |
|         '2.38.0.2.1',
 | |
|         '2.38.0.3.1',
 | |
|         '2.38.0.4.1'
 | |
|     ]
 | |
|     tags_of_concern = [tag for tag in tags_of_concern if tag not in tags_to_ignore]
 | |
| 
 | |
|     # Interal Builds
 | |
|     #
 | |
|     # If you want to tag a build which is not intended to be reverse
 | |
|     # integrated, include the text "internal" somewhere in the tag name, such as
 | |
|     #
 | |
|     # 1.2.3.4.5-internal
 | |
|     # 1.2.3.4.5-internal-mkirk
 | |
|     #
 | |
|     # NOTE: that if you upload the build to test flight, you still need to give testflight
 | |
|     # a numeric build number - so tag won't match the build number exactly as they do
 | |
|     # with production build tags. That's fine.
 | |
|     #
 | |
|     # To avoid collision with "production" build numbers, use at least a 5
 | |
|     # digit build number.
 | |
|     tags_of_concern = [tag for tag in tags_of_concern if "internal" not in tag]
 | |
| 
 | |
|     if len(tags_of_concern) > 0:
 | |
|         logging.debug("Found unmerged tags newer than epoch: %s" % tags_of_concern)
 | |
|         raise RuntimeError("💥 Found unmerged tags: %s" % tags_of_concern)
 | |
|     else:
 | |
|         logging.debug("No unmerged tags newer than epoch. All good!")
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|         main()
 |