diff --git a/rust/rhgitaly/src/oid.rs b/rust/rhgitaly/src/oid.rs
index 721ac5a4c6a63e1443b83e482ac9ded18c8ad560_cnVzdC9yaGdpdGFseS9zcmMvb2lkLnJz..eb6763d7756800f0c20f133e6156233262565705_cnVzdC9yaGdpdGFseS9zcmMvb2lkLnJz 100644
--- a/rust/rhgitaly/src/oid.rs
+++ b/rust/rhgitaly/src/oid.rs
@@ -58,6 +58,15 @@
     Ok((oid, path.ok_or(OidError::MissingPath)?))
 }
 
+pub fn tree_oid<P: AsRef<[u8]> + ?Sized>(changeset_id: &Node, path: &P) -> String {
+    concat_chgsid_path(changeset_id, path)
+}
+
+pub fn extract_tree_oid(oid: &str) -> Result<(Node, Vec<u8>), OidError> {
+    let (oid, path) = split_chgsid_path(oid)?;
+    Ok((oid, path.ok_or(OidError::MissingPath)?))
+}
+
 #[cfg(test)]
 /// Same test data as in Python hgitaly.tests.test_oid
 mod tests {