|  | @@ -347,7 +347,7 @@ func MigrateRepository(u *User, name, desc string, private, mirror bool, url str
 | 
	
		
			
				|  |  |  			return repo, err
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		repo.IsMirror = true
 | 
	
		
			
				|  |  | -		return repo, UpdateRepository(repo)
 | 
	
		
			
				|  |  | +		return repo, UpdateRepository(repo, false)
 | 
	
		
			
				|  |  |  	} else {
 | 
	
		
			
				|  |  |  		os.RemoveAll(repoPath)
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -362,7 +362,7 @@ func MigrateRepository(u *User, name, desc string, private, mirror bool, url str
 | 
	
		
			
				|  |  |  		return repo, fmt.Errorf("create update hook: %v", err)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	return repo, UpdateRepository(repo)
 | 
	
		
			
				|  |  | +	return repo, UpdateRepository(repo, false)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // extractGitBareZip extracts git-bare.zip to repository path.
 | 
	
	
		
			
				|  | @@ -501,7 +501,7 @@ func initRepository(e Engine, f string, u *User, repo *Repository, initReadme bo
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		repo.IsBare = true
 | 
	
		
			
				|  |  |  		repo.DefaultBranch = "master"
 | 
	
		
			
				|  |  | -		return updateRepository(e, repo)
 | 
	
		
			
				|  |  | +		return updateRepository(e, repo, false)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Apply changes and commit.
 | 
	
	
		
			
				|  | @@ -733,7 +733,7 @@ func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error)
 | 
	
		
			
				|  |  |  	return os.Rename(RepoPath(userName, oldRepoName), RepoPath(userName, newRepoName))
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func updateRepository(e Engine, repo *Repository) error {
 | 
	
		
			
				|  |  | +func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) {
 | 
	
		
			
				|  |  |  	repo.LowerName = strings.ToLower(repo.Name)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if len(repo.Description) > 255 {
 | 
	
	
		
			
				|  | @@ -742,12 +742,40 @@ func updateRepository(e Engine, repo *Repository) error {
 | 
	
		
			
				|  |  |  	if len(repo.Website) > 255 {
 | 
	
		
			
				|  |  |  		repo.Website = repo.Website[:255]
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	_, err := e.Id(repo.Id).AllCols().Update(repo)
 | 
	
		
			
				|  |  | -	return err
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if _, err = e.Id(repo.Id).AllCols().Update(repo); err != nil {
 | 
	
		
			
				|  |  | +		return fmt.Errorf("update: %v", err)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if visibilityChanged {
 | 
	
		
			
				|  |  | +		if err = repo.getOwner(e); err != nil {
 | 
	
		
			
				|  |  | +			return fmt.Errorf("getOwner: %v", err)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if !repo.Owner.IsOrganization() {
 | 
	
		
			
				|  |  | +			return nil
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// Organization repository need to recalculate access table when visivility is changed.
 | 
	
		
			
				|  |  | +		if err = repo.recalculateTeamAccesses(e, 0); err != nil {
 | 
	
		
			
				|  |  | +			return fmt.Errorf("recalculateTeamAccesses: %v", err)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return nil
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func UpdateRepository(repo *Repository) error {
 | 
	
		
			
				|  |  | -	return updateRepository(x, repo)
 | 
	
		
			
				|  |  | +func UpdateRepository(repo *Repository, visibilityChanged bool) (err error) {
 | 
	
		
			
				|  |  | +	sess := x.NewSession()
 | 
	
		
			
				|  |  | +	defer sessionRelease(sess)
 | 
	
		
			
				|  |  | +	if err = sess.Begin(); err != nil {
 | 
	
		
			
				|  |  | +		return err
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err = updateRepository(x, repo, visibilityChanged); err != nil {
 | 
	
		
			
				|  |  | +		return fmt.Errorf("updateRepository: %v", err)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return sess.Commit()
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // DeleteRepository deletes a repository for a user or organization.
 |