void RemoteRepositoryAssistant::on_assistant_apply () { // Configurations. extern Settings *settings; ProjectConfiguration *projectconfig = settings->projectconfig(bible); // Whether to use the remote repository. bool use_remote_repository = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton_use_repository)); if (bible_notes_selector_bible ()) projectconfig->git_use_remote_repository_set(use_remote_repository); else settings->genconfig.consultation_notes_git_use_remote_repository_set(use_remote_repository); // The remote repository URL. if (bible_notes_selector_bible ()) projectconfig->git_remote_repository_url_set(repository_url_get()); else settings->genconfig.consultation_notes_git_remote_repository_url_set(repository_url_get()); // If the repository was cloned, move it into place. if (repository_was_cloned()) { ustring destination_data_directory; if (bible_notes_selector_bible ()) destination_data_directory = project_data_directory_project(bible); else destination_data_directory = notes_shared_storage_folder (); unix_rmdir(destination_data_directory); unix_mv(persistent_clone_directory, destination_data_directory); // Switch rename detection off. // This is necessary for the consultation notes, since git has been seen to cause spurious renames. GwSpawn spawn ("git"); spawn.workingdirectory (destination_data_directory); spawn.arg ("config"); spawn.arg ("--global"); spawn.arg ("diff.renamelimit"); spawn.arg ("0"); spawn.run (); } if (bible_notes_selector_bible ()) { // Take a snapshot of the whole project. snapshots_shoot_project (bible); } else{ // Create the index for the consultation notes. notes_create_index (); } // Show summary. gtk_assistant_set_current_page (GTK_ASSISTANT (assistant), summary_page_number); }
void notes_storage_verify() // Verify / setup the project notes storage system. { // Check an/or create the notes storage area. ustring directory; directory = notes_shared_storage_folder (); if (!g_file_test(directory.c_str(), G_FILE_TEST_IS_DIR)) { gw_mkdir_with_parents (directory); } // Convert old notes database to new format in separate files. // The reason for this is that notes in separate files can be shared through git. notes_convert_database_to_plain_files (); // If there's no index, create one. if (!g_file_test(notes_index_filename ().c_str(), G_FILE_TEST_IS_REGULAR)) { notes_create_index (); } }