filetree-exporter

Description

Monticello FileTree Exporter

Details

Source
GitHub
Dialect
pharo (40% confidence)
License
MIT
Stars
1
Created
Aug. 13, 2014
Updated
Aug. 20, 2022
Topics
filetree git metacello monticello pharo smalltalk tonel

Categories

Packaging / VCS

README excerpt

Monticello to Filetree Exporter
===============================

This is a [Pharo](https://pharo.org) command line tool to help migrating existing monticello repositories to git using [filetree](https://github.com/dalehenrich/filetree).

This script does the following:
- exports all Monticello versions of a given repository in chronological order,
- allows you to map the Monticello user names to proper git authors.

## Migration to tonel
Pharo has introduced a new format called [tonel](https://github.com/pharo-vcs/tonel). To use tonel you can use the filetree exporter to first export your project into filetree format and then use Iceberg (the Pharo Git tool) to convert your repository to tonel.

## Example Usage

```bash
MC_REPO_URL="http://smalltalkhub.com/mc/UserName/Project/main"
pharo exporter.image metacello install "github://theseion/filetree-exporter" BaselineOfFileTreeExporter
pharo exporter.image filetree-exporter --help
pharo exporter.image filetree-exporter users --from="$MC_REPO_URL" > users.txt
```

Now you can edit the user mapping in `users.txt`, line by line with the following format:
~~~
...
MONTICELLO-USER NAME SURNAME <EMAIL>
...
~~~

After that you can start exporting the monticello repository

```bash
pharo exporter.image filetree-exporter export \
   --from="$MC_REPO_URL" \
   --to="~/my-git-repos/the-project"
   --user-map=users.txt
   --package-filter="MyPackage.*"
   --skip=100
```

Now you have a complete copy of the contents of `$MC_REPO_URL` in the local git repository under `~/my-git-repos/the-project`.

## Push the Exported Repository
Execute the following bash commands to push the expoter Monticello versions to an empty github repository:
```bash
cd ~/my-git-repos/the-project
git remote add origin git@github.com:$GITHUB_USER/$GITHUB_REPO.git
git push --set-upstream origin master
```

If you created the github repository already with a `README.md` file, rebase your exported version on top.
Instead of the direct `git push` command execute the following statements:
```bash
cd ~/my-git-repos/the-project
git remote add origin git@github.com:$GITHUB_USER/$GITHUB_REPO.git
git fetch --all
# replay the versions of the exported repository on top of the existing remote versions
git rebase origin/master
git push --set-upstream origin master
```
← Back to results