A simple script that I have put in my Django applications directory to fetch the latest application code from git and svn.
For example, your directory structure might look like so:
django-apps/ django-tagging/ django-pagination/ django-registration/ django-threadedcomments/ django-mptt/ update_apps.py
Where update_apps.py is the source of this snippet.
To run, simply execute:
And the script will iterate through all of your apps and update them to the latest version.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/env/python import os import os.path from subprocess import call if __name__ == "__main__": apps_dir = os.path.abspath('.') for app_name in os.listdir(apps_dir): app_dir = os.path.abspath(os.path.join(apps_dir, app_name)) git_path = os.path.join(app_dir, '.git') svn_path = os.path.join(app_dir, '.svn') if os.path.lexists(svn_path): print "Updating svn %s" % app_dir os.chdir(app_dir) call(['svn', 'update']) elif os.path.lexists(git_path): print "Updating git %s" % app_dir os.chdir(app_dir) call(['git', 'pull']) else: continue
More like this
- Stuff by NixonDash 3 weeks, 6 days ago
- Add custom fields to the built-in Group model by jmoppel 3 months ago
- Month / Year SelectDateWidget based on django SelectDateWidget by pierreben 6 months, 2 weeks ago
- Python Django CRUD Example Tutorial by tuts_station 6 months, 4 weeks ago
- Browser-native date input field by kytta 8 months, 1 week ago
Subversion has an "externals" facility that works well in this situation: simply define all your external apps (even Django itself, perhaps) in
svn:externals, then an
svn upwill pull all the latest versions. (You can also lock a specific revision.)
githas something similar, but I don't know how it works.
Thanks! been wanting this for sometime
@kcarnold: That's a really great solution when all of your applications are within a subversion project, and we do it that way for the Pinax project. That being said, I like to keep a separate global directory just for Django apps, and this script addresses that particular use case.
Great snippet, but is it possible to add Mercurial support?
The update command is
hg -u pull
Nice trick, but I'm pretty sure that your
envusage is wrong – it's supposed to be something like this:
Please login first before commenting.