MCPcopy Create free account
hub / github.com/EpicGames/lore / prepare_commit_metadata

Function prepare_commit_metadata

lore-revision/src/commit.rs:2921–3028  ·  view source on GitHub ↗
(
    repository: Arc<RepositoryContext>,
    metadata: Metadata,
    branch: BranchId,
    message: String,
    keys: Option<Vec<String>>,
    values: Option<Vec<String>>,
    formats: Option<Vec<Met

Source from the content-addressed store, hash-verified

2919}
2920
2921pub async fn prepare_commit_metadata(
2922 repository: Arc<RepositoryContext>,
2923 metadata: Metadata,
2924 branch: BranchId,
2925 message: String,
2926 keys: Option<Vec<String>>,
2927 values: Option<Vec<String>>,
2928 formats: Option<Vec<MetadataType>>,
2929) -> Result<Arc<Metadata>, CommitError> {
2930 let mut metadata = metadata;
2931
2932 // Set metadata for revision, overwriting any existing value
2933 let commit_timestamp = util::time::timestamp();
2934 let commit_user = execution_context().user_id().await;
2935 let commit_changelist = std::env::var("LORE_P4_CHANGELIST").unwrap_or_default();
2936
2937 metadata
2938 .set_branch(branch)
2939 .forward::<CommitError>("Failed setting revision metadata")?;
2940 metadata
2941 .set_u64(metadata::TIMESTAMP, commit_timestamp)
2942 .forward::<CommitError>("Failed setting revision metadata")?;
2943 metadata
2944 .set_string(metadata::MESSAGE, &message)
2945 .forward::<CommitError>("Failed setting revision metadata")?;
2946 // TODO: Extend this with UCS-Auth information
2947 if commit_user.is_empty() {
2948 // Authorship is required only when the active remote authenticates.
2949 let require_identity = match repository.remote().await {
2950 Ok(conn) => !conn.auth_url.is_empty(),
2951 Err(lore_transport::ProtocolError::NoRemote(_)) => false,
2952 Err(_) => true,
2953 };
2954 if require_identity {
2955 return Err(MissingIdentity.into());
2956 }
2957 } else {
2958 metadata
2959 .set_string(metadata::CREATED_BY, &commit_user)
2960 .forward::<CommitError>("Failed setting revision metadata")?;
2961 metadata
2962 .set_string(metadata::COMMITTED_BY, &commit_user)
2963 .forward::<CommitError>("Failed setting revision metadata")?;
2964 }
2965 // TODO: Move this to external metadata
2966 if !commit_changelist.is_empty() {
2967 metadata
2968 .set_string(metadata::P4_CHANGELIST, &commit_changelist)
2969 .forward::<CommitError>("Failed setting revision metadata")?;
2970 }
2971
2972 if let (Some(keys), Some(values), Some(formats)) = (keys, values, formats) {
2973 // Set any additional metadata
2974 for index in 0..keys.len() {
2975 let key = &keys.as_slice()[index];
2976 let value = &values.as_slice()[index];
2977 let format = formats.as_slice()[index];
2978 match format {

Callers 5

create_linked_branchesFunction · 0.85
build_commit_metadataFunction · 0.85
restoreFunction · 0.85
merge_into_linkFunction · 0.85
merge_intoFunction · 0.85

Calls 15

execution_contextFunction · 0.85
user_idMethod · 0.80
set_branchMethod · 0.80
set_u64Method · 0.80
set_stringMethod · 0.80
internalMethod · 0.80
set_addressMethod · 0.80
set_boolMethod · 0.80
set_contextMethod · 0.80
set_hashMethod · 0.80
timestampFunction · 0.50
is_emptyMethod · 0.45

Tested by

no test coverage detected