Login

Update All Apps to Latest Revision

Author:
dedaluz
Posted:
July 30, 2008
Language:
Python
Version:
.96
Tags:
script update svn git hg bzr
Score:
0 (after 0 ratings)

This snippet is based on #844 and #892 and updates all apps in the current directory using hg, svn, git or bzr. Including subdirectories not under version control (subfolders to keep your stuff organized).

For example:

python/lib/
    django-trunk/
    django-0.96/
    pydelicious/
    (...)
    django-apps/
        django-tagging/
        django-pagination/
        django-registration/
        django-threadedcomments/
        django-mptt/
    (...)

The script will iterate through all of your apps (in the current dir and also recursively in subdirs NOT under version control) and update them to the latest version.

To run, simply execute:

python update_apps.py

in the desired parent folder.

Just in case it could be useful: In my case I'm using MAC OS X. I have a folder full of miscellaneous scripts under my HOMEDIR, with this content:

/Users/Dedaluz/bin/update_apps.py
/Users/Dedaluz/bin/update_apps  (this is a bash script)

The update_apps script contains simply:

#!/bin/bash
python /Users/Dedaluz/bin/update_apps.py

Then I put this folder in my path, so in my /HOMEDIR/.bash_profile I add this line

export PATH=$PATH:$HOME/bin

And I just can update from any parent folder just going there and typing: update_apps

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/env/python
import os
import os.path
from subprocess import call
    
def update(apps_dir):
    """Updates a collection of Subversion/Git/Mercurial/Bazaar working copies, including subdirectories"""
    for app_name in os.listdir(apps_dir):
        app_dir = os.path.abspath(os.path.join(apps_dir, app_name))
        if os.path.isdir(app_dir):
            git_path = os.path.join(app_dir, '.git')
            svn_path = os.path.join(app_dir, '.svn')
            hg_path = os.path.join(app_dir, '.hg')
            bzr_path = os.path.join(app_dir, '.bzr')
            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'])
            elif os.path.lexists(hg_path):
                print "Updating hg %s" % app_dir
                os.chdir(app_dir)
                call(['hg', 'pull', '-u'])
            elif os.path.lexists(bzr_path):
                print "Updating bzr %s" % app_dir
                os.chdir(app_dir)
                call(['bzr', 'update'])     
            else:
                update(app_dir)
        else:
            continue
    return None
    
if __name__ == "__main__":
    update(os.path.abspath('.'))

More like this

  1. Update All Apps to Latest Revision by ericflo 7 years ago
  2. update-django: Update your django git branches. by telenieko 6 years, 8 months ago
  3. Update All Apps to Latest Revision by izibi 6 years, 11 months ago
  4. set_paths by amitu 6 years, 8 months ago
  5. Full Model History by willhardy 6 years, 6 months ago

Comments

dedaluz (on July 30, 2008):

I think it could be useful to make it accept parameters like:

update_apps ..
update apps ./some-dir/

#

Please login first before commenting.