rust/hg-core/src/operations/debugdata.rs
author Raphaël Gomès <rgomes@octobus.net>
Thu, 26 Sep 2024 14:26:24 +0200
changeset 52182 bd8081e9fd62
parent 52160 039b7caeb4d9
permissions -rw-r--r--
rust: don't star export from the `revlog` module This made a lot of the imports confusing because they didn't make sense at the top level (so, outside of `revlog`), and they hide the more common types when autocompleting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45527
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     1
// debugdata.rs
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     2
//
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     3
// Copyright 2020 Antoine Cezar <antoine.cezar@octobus.net>
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     4
//
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     5
// This software may be used and distributed according to the terms of the
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     6
// GNU General Public License version 2 or any later version.
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
     7
51867
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
     8
use crate::errors::HgError;
52182
bd8081e9fd62 rust: don't star export from the `revlog` module
Raphaël Gomès <rgomes@octobus.net>
parents: 52160
diff changeset
     9
use crate::exit_codes;
46167
8a4914397d02 rust: introduce Repo and Vfs types for filesystem abstraction
Simon Sapin <simon.sapin@octobus.net>
parents: 46135
diff changeset
    10
use crate::repo::Repo;
52160
039b7caeb4d9 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net>
parents: 51867
diff changeset
    11
use crate::revlog::options::default_revlog_options;
52182
bd8081e9fd62 rust: don't star export from the `revlog` module
Raphaël Gomès <rgomes@octobus.net>
parents: 52160
diff changeset
    12
use crate::revlog::{Revlog, RevlogError, RevlogType};
45527
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
    13
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
    14
/// Dump the contents data of a revision.
46135
dca9cb99971c rust: replace most "operation" structs with functions
Simon Sapin <simon.sapin@octobus.net>
parents: 46033
diff changeset
    15
pub fn debug_data(
46167
8a4914397d02 rust: introduce Repo and Vfs types for filesystem abstraction
Simon Sapin <simon.sapin@octobus.net>
parents: 46135
diff changeset
    16
    repo: &Repo,
46433
4b381dbbf8b7 rhg: centralize parsing of `--rev` CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents: 46431
diff changeset
    17
    revset: &str,
51867
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    18
    kind: RevlogType,
46437
b274aa2f20fd rust: remove three enums that were identical to `RevlogError`
Simon Sapin <simon.sapin@octobus.net>
parents: 46435
diff changeset
    19
) -> Result<Vec<u8>, RevlogError> {
46135
dca9cb99971c rust: replace most "operation" structs with functions
Simon Sapin <simon.sapin@octobus.net>
parents: 46033
diff changeset
    20
    let index_file = match kind {
51867
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    21
        RevlogType::Changelog => "00changelog.i",
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    22
        RevlogType::Manifestlog => "00manifest.i",
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    23
        _ => {
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    24
            return Err(RevlogError::Other(HgError::abort(
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    25
                format!("invalid revlog type {}", kind),
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    26
                exit_codes::ABORT,
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    27
                None,
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    28
            )))
69b804c8e09e rust: use new revlog configs in all revlog opening code
Raphaël Gomès <rgomes@octobus.net>
parents: 51191
diff changeset
    29
        }
46135
dca9cb99971c rust: replace most "operation" structs with functions
Simon Sapin <simon.sapin@octobus.net>
parents: 46033
diff changeset
    30
    };
51191
13f58ce70299 rust-revlog: teach the revlog opening code to read the repo options
Raphaël Gomès <rgomes@octobus.net>
parents: 50977
diff changeset
    31
    let revlog = Revlog::open(
13f58ce70299 rust-revlog: teach the revlog opening code to read the repo options
Raphaël Gomès <rgomes@octobus.net>
parents: 50977
diff changeset
    32
        &repo.store_vfs(),
13f58ce70299 rust-revlog: teach the revlog opening code to read the repo options
Raphaël Gomès <rgomes@octobus.net>
parents: 50977
diff changeset
    33
        index_file,
13f58ce70299 rust-revlog: teach the revlog opening code to read the repo options
Raphaël Gomès <rgomes@octobus.net>
parents: 50977
diff changeset
    34
        None,
52160
039b7caeb4d9 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net>
parents: 51867
diff changeset
    35
        default_revlog_options(
039b7caeb4d9 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net>
parents: 51867
diff changeset
    36
            repo.config(),
039b7caeb4d9 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net>
parents: 51867
diff changeset
    37
            repo.requirements(),
039b7caeb4d9 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net>
parents: 51867
diff changeset
    38
            RevlogType::Changelog,
039b7caeb4d9 rust-revlog: introduce an `options` module
Raphaël Gomès <rgomes@octobus.net>
parents: 51867
diff changeset
    39
        )?,
51191
13f58ce70299 rust-revlog: teach the revlog opening code to read the repo options
Raphaël Gomès <rgomes@octobus.net>
parents: 50977
diff changeset
    40
    )?;
46433
4b381dbbf8b7 rhg: centralize parsing of `--rev` CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents: 46431
diff changeset
    41
    let rev =
4b381dbbf8b7 rhg: centralize parsing of `--rev` CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents: 46431
diff changeset
    42
        crate::revset::resolve_rev_number_or_hex_prefix(revset, &revlog)?;
50977
1928b770e3e7 rust: use the new `UncheckedRevision` everywhere applicable
Raphaël Gomès <rgomes@octobus.net>
parents: 49937
diff changeset
    43
    let data = revlog.get_rev_data_for_checked_rev(rev)?;
48541
f2f57724d4eb rhg: Add RevlogEntry::data that does delta resolution
Simon Sapin <simon.sapin@octobus.net>
parents: 46437
diff changeset
    44
    Ok(data.into_owned())
45527
b56df13a0450 hg-core: define a `DebugData` `Operation`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
diff changeset
    45
}