mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-09-17 23:59:44 +00:00
get nickname from seahub database (#663)
* Add parse seahub database config * Get nickname from seahub database * Go get nickname from seahub database * Save output of script to memory and fix some errors * Add exec permission and free child_output --------- Co-authored-by: 杨赫然 <heran.yang@seafile.com>
This commit is contained in:
@@ -13,6 +13,31 @@ merge_trees_recursive (const char *store_id, int version,
|
||||
const char *basedir,
|
||||
MergeOptions *opt);
|
||||
|
||||
static const char *
|
||||
get_nickname_by_modifier (GHashTable *email_to_nickname, const char *modifier)
|
||||
{
|
||||
const char *nickname = NULL;
|
||||
|
||||
if (!modifier) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
nickname = g_hash_table_lookup (email_to_nickname, modifier);
|
||||
if (nickname) {
|
||||
return nickname;
|
||||
}
|
||||
|
||||
char *sql = "SELECT nickname from profile_profile WHERE user = ?";
|
||||
nickname = seaf_db_statement_get_string(seaf->seahub_db, sql, 1, "string", modifier);
|
||||
|
||||
if (!nickname) {
|
||||
nickname = modifier;
|
||||
}
|
||||
g_hash_table_insert (email_to_nickname, g_strdup(modifier), g_strdup(nickname));
|
||||
|
||||
return nickname;
|
||||
}
|
||||
|
||||
static char *
|
||||
merge_conflict_filename (const char *store_id, int version,
|
||||
MergeOptions *opt,
|
||||
@@ -20,6 +45,7 @@ merge_conflict_filename (const char *store_id, int version,
|
||||
const char *filename)
|
||||
{
|
||||
char *path = NULL, *modifier = NULL, *conflict_name = NULL;
|
||||
const char *nickname = NULL;
|
||||
gint64 mtime;
|
||||
SeafCommit *commit;
|
||||
|
||||
@@ -46,7 +72,11 @@ merge_conflict_filename (const char *store_id, int version,
|
||||
seaf_commit_unref (commit);
|
||||
}
|
||||
|
||||
conflict_name = gen_conflict_path (filename, modifier, mtime);
|
||||
nickname = modifier;
|
||||
if (seaf->seahub_db)
|
||||
nickname = get_nickname_by_modifier (opt->email_to_nickname, modifier);
|
||||
|
||||
conflict_name = gen_conflict_path (filename, nickname, mtime);
|
||||
|
||||
out:
|
||||
g_free (path);
|
||||
@@ -61,6 +91,7 @@ merge_conflict_dirname (const char *store_id, int version,
|
||||
const char *dirname)
|
||||
{
|
||||
char *modifier = NULL, *conflict_name = NULL;
|
||||
const char *nickname = NULL;
|
||||
SeafCommit *commit;
|
||||
|
||||
commit = seaf_commit_manager_get_commit (seaf->commit_mgr,
|
||||
@@ -74,7 +105,11 @@ merge_conflict_dirname (const char *store_id, int version,
|
||||
modifier = g_strdup(commit->creator_name);
|
||||
seaf_commit_unref (commit);
|
||||
|
||||
conflict_name = gen_conflict_path (dirname, modifier, (gint64)time(NULL));
|
||||
nickname = modifier;
|
||||
if (seaf->seahub_db)
|
||||
nickname = get_nickname_by_modifier (opt->email_to_nickname, modifier);
|
||||
|
||||
conflict_name = gen_conflict_path (dirname, nickname, (gint64)time(NULL));
|
||||
|
||||
out:
|
||||
g_free (modifier);
|
||||
@@ -687,6 +722,11 @@ seaf_merge_trees (const char *store_id, int version,
|
||||
|
||||
g_return_val_if_fail (n == 2 || n == 3, -1);
|
||||
|
||||
opt->email_to_nickname = g_hash_table_new_full(g_str_hash,
|
||||
g_str_equal,
|
||||
g_free,
|
||||
g_free);
|
||||
|
||||
trees = g_new0 (SeafDir *, n);
|
||||
for (i = 0; i < n; ++i) {
|
||||
root = seaf_fs_manager_get_seafdir (seaf->fs_mgr, store_id, version, roots[i]);
|
||||
@@ -704,5 +744,7 @@ seaf_merge_trees (const char *store_id, int version,
|
||||
seaf_dir_free (trees[i]);
|
||||
g_free (trees);
|
||||
|
||||
g_hash_table_destroy (opt->email_to_nickname);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user