Revision 440:6253d777aa12 extra

View differences:

extra/soundsoftware/convert-external-repos.rb
62 62
$http_pass    = ''
63 63
$test         = false
64 64

  
65
$mirrordir    = '/var/mirror'
66

  
65 67
def log(text, options={})
66 68
  level = options[:level] || 0
67 69
  puts text unless $quiet or level > $verbose
......
168 170
  end
169 171

  
170 172
  system($command, project.identifier, repos_path, external_url)
173
  
174
  $cache_clearance_file = File.join($mirrordir, project.identifier, 'url_changed')
175
  if File.file?($cache_clearance_file)
176
    log("\tproject repo url has changed, requesting cache clearance")
177
    if project.post(:repository_cache, :key => $api_key)
178
      File.delete($cache_clearance_file)
179
    end
180
  end
171 181

  
172 182
end
173 183
  
extra/soundsoftware/update-external-repo.sh
60 60

  
61 61
success=""
62 62

  
63
# If we have a record of the last successfully updated remote repo
64
# URL, check it against our current remote URL: if it has changed, we
65
# will need to start again with a new clone rather than pulling
66
# updates into the existing local mirror
67

  
68
successfile="$project_mirror/last_successful_url"
69
if [ -f "$successfile" ]; then
70
    last=$(cat "$successfile")
71
    if [ x"$last" = x"$remote_repo" ]; then
72
	echo "$$: Remote URL is unchanged from last successful update"
73
    else
74
	echo "$$: Remote URL has changed since last successful update:"
75
	echo "$$: Last URL was $last, current is $remote_repo"
76
	suffix="$$.$(date +%s)"
77
	echo "$$: Moving existing repos to $suffix suffix and starting afresh"
78
	mv "$project_repo_mirror" "$project_repo_mirror"."$suffix"
79
	mv "$local_repo" "$local_repo"."$suffix"
80
	mv "$successfile" "$successfile"."$suffix"
81
	touch "$project_mirror/url_changed"
82
    fi
83
fi
84

  
63 85
if [ -d "$project_repo_mirror" ]; then
64 86

  
65 87
    # Repo mirror exists: update it
......
67 89

  
68 90
    if [ -d "$project_repo_mirror/.hg" ]; then
69 91
	"$hg" --config extensions.convert= convert --datesort "$remote_repo" "$project_repo_mirror" && success=true
92
	if [ -z "$success" ]; then
93
	    ( cd "$project_repo_mirror" && "$hg" pull "$remote_repo" ) && success=true
94
	fi
70 95
    elif [ -d "$project_repo_mirror/.git" ]; then
71 96
	( cd "$project_repo_mirror" && git pull "$remote_repo" master ) && success=true
72 97
    else 
......
96 121

  
97 122
if [ -n "$success" ]; then
98 123
    echo "$$: Update successful, pulling into local repo at $local_repo"
124
    if [ ! -d "$local_repo" ]; then
125
	"$hg" init "$local_repo"
126
    fi
99 127
    if [ -d "$project_repo_mirror/.git" ]; then
100
	if [ ! -d "$local_repo" ]; then
101
	    "$hg" init "$local_repo"
102
	fi
103
	( cd "$local_repo" && "$hg" --config extensions.hggit= pull "$project_repo_mirror" )
128
	( cd "$local_repo" && "$hg" --config extensions.hggit= pull "$project_repo_mirror" ) && echo "$remote_repo" > "$successfile"
104 129
    else 
105
	( cd "$local_repo" && "$hg" pull "$project_repo_mirror" )
130
	( cd "$local_repo" && "$hg" pull "$project_repo_mirror" ) && echo "$remote_repo" > "$successfile"
106 131
    fi
107 132
fi

Also available in: Unified diff