diff options
| -rw-r--r-- | src/git_remote_helper.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/git_remote_helper.rs b/src/git_remote_helper.rs index e55a2eb..2019bd2 100644 --- a/src/git_remote_helper.rs +++ b/src/git_remote_helper.rs | |||
| @@ -1063,6 +1063,28 @@ fn generate_updated_state( | |||
| 1063 | if from.is_empty() { | 1063 | if from.is_empty() { |
| 1064 | // delete | 1064 | // delete |
| 1065 | new_state.remove(to); | 1065 | new_state.remove(to); |
| 1066 | if to.contains("refs/tags") { | ||
| 1067 | new_state.remove(&format!("{to}{}", "^{}")); | ||
| 1068 | } | ||
| 1069 | } else if to.contains("refs/tags") { | ||
| 1070 | new_state.insert( | ||
| 1071 | format!("{to}{}", "^{}"), | ||
| 1072 | git_repo | ||
| 1073 | .get_commit_or_tip_of_reference(from) | ||
| 1074 | .unwrap() | ||
| 1075 | .to_string(), | ||
| 1076 | ); | ||
| 1077 | new_state.insert( | ||
| 1078 | to.to_string(), | ||
| 1079 | git_repo | ||
| 1080 | .git_repo | ||
| 1081 | .find_reference(to) | ||
| 1082 | .unwrap() | ||
| 1083 | .peel(git2::ObjectType::Tag) | ||
| 1084 | .unwrap() | ||
| 1085 | .id() | ||
| 1086 | .to_string(), | ||
| 1087 | ); | ||
| 1066 | } else { | 1088 | } else { |
| 1067 | // add or update | 1089 | // add or update |
| 1068 | new_state.insert( | 1090 | new_state.insert( |