mirror of
https://github.com/octoleo/syncthing.git
synced 2025-02-02 11:58:28 +00:00
Hard override on changes from master repo
This commit is contained in:
parent
12eda0449a
commit
26ebbee877
File diff suppressed because one or more lines are too long
@ -108,6 +108,7 @@ func startGUI(cfg config.GUIConfiguration, assetDir string, m *model.Model) erro
|
|||||||
router.Post("/rest/error", restPostError)
|
router.Post("/rest/error", restPostError)
|
||||||
router.Post("/rest/error/clear", restClearErrors)
|
router.Post("/rest/error/clear", restClearErrors)
|
||||||
router.Post("/rest/discovery/hint", restPostDiscoveryHint)
|
router.Post("/rest/discovery/hint", restPostDiscoveryHint)
|
||||||
|
router.Post("/rest/model/override", restPostOverride)
|
||||||
|
|
||||||
mr := martini.New()
|
mr := martini.New()
|
||||||
mr.Use(csrfMiddleware)
|
mr.Use(csrfMiddleware)
|
||||||
@ -172,6 +173,12 @@ func restGetModel(m *model.Model, w http.ResponseWriter, r *http.Request) {
|
|||||||
json.NewEncoder(w).Encode(res)
|
json.NewEncoder(w).Encode(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func restPostOverride(m *model.Model, r *http.Request) {
|
||||||
|
var qs = r.URL.Query()
|
||||||
|
var repo = qs.Get("repo")
|
||||||
|
m.Override(repo)
|
||||||
|
}
|
||||||
|
|
||||||
func restGetNeed(m *model.Model, w http.ResponseWriter, r *http.Request) {
|
func restGetNeed(m *model.Model, w http.ResponseWriter, r *http.Request) {
|
||||||
var qs = r.URL.Query()
|
var qs = r.URL.Query()
|
||||||
var repo = qs.Get("repo")
|
var repo = qs.Get("repo")
|
||||||
|
@ -627,6 +627,12 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.override = function (repo) {
|
||||||
|
$http.post(urlbase + "/model/override?repo=" + encodeURIComponent(repo)).success(function () {
|
||||||
|
$scope.refresh();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$scope.init();
|
$scope.init();
|
||||||
setInterval($scope.refresh, 10000);
|
setInterval($scope.refresh, 10000);
|
||||||
});
|
});
|
||||||
|
@ -206,7 +206,10 @@ found in the LICENSE file.
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<span class="pull-right"><a class="btn btn-sm btn-primary" href="" ng-click="editRepo(repo)"><span class="glyphicon glyphicon-pencil"></span> Edit</a></span>
|
<span class="pull-right">
|
||||||
|
<a class="btn btn-sm btn-primary" href="" ng-click="editRepo(repo)"><span class="glyphicon glyphicon-pencil"></span> Edit</a>
|
||||||
|
<a class="btn btn-sm btn-danger" ng-if="repo.ReadOnly && model[repo.ID].needFiles > 0" ng-click="override(repo.ID)" href=""><span class="glyphicon glyphicon-upload"></span> Override Changes</a>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -851,3 +851,26 @@ func (m *Model) State(repo string) string {
|
|||||||
return "unknown"
|
return "unknown"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Model) Override(repo string) {
|
||||||
|
fs := m.NeedFilesRepo(repo)
|
||||||
|
|
||||||
|
m.rmut.Lock()
|
||||||
|
r := m.repoFiles[repo]
|
||||||
|
for i := range fs {
|
||||||
|
f := &fs[i]
|
||||||
|
h := r.Get(cid.LocalID, f.Name)
|
||||||
|
if h.Name != f.Name {
|
||||||
|
// We are missing the file
|
||||||
|
f.Flags |= protocol.FlagDeleted
|
||||||
|
f.Blocks = nil
|
||||||
|
} else {
|
||||||
|
// We have the file, replace with our version
|
||||||
|
*f = h
|
||||||
|
}
|
||||||
|
f.Version = lamport.Default.Tick(f.Version)
|
||||||
|
}
|
||||||
|
m.rmut.Unlock()
|
||||||
|
|
||||||
|
r.Update(cid.LocalID, fs)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user