Wiith the NR merge coming up, I decided to give macroscope the capability to find and detect cliques of duplicate files, so I can drop redundant copies of images in NR.
You can generate this report by going to data/tools and typing make collisions My code uses MD5 hashing rather than byte-by-byte comparison, so this works pretty fast. Here's a copy of the current report. I deduce from this, for example, that it ought to be possible to remove the file data/campaigns/The_South_Guard/images/misc/cross.png. %% ../../images/terrain/castle/elven/keep-wall-0-ne.png ../../images/terrain/castle/elven/keep-inside-ne.png ../../images/terrain/castle/elven/keep-wall-1-ne.png ../../images/terrain/castle/elven/keep-wall-ne.png %% ../../images/terrain/cave/wall-rough-chasm-convex-nw.png ../../images/terrain/cave/wall-rough-convex-nw.png %% ../../images/projectiles/wailprojectile-n-6.png ../../images/projectiles/wailprojectile-s-6.png %% ../../images/terrain/castle/sunkenkeep-keep-e.png ../../images/terrain/castle/sunken-ruinkeep1-keep-e.png %% ../../images/terrain/castle/encampment-concave-w.png ../../images/terrain/castle/encampment-convex-w.png %% ../../images/projectiles/wailprojectile-n-4.png ../../images/projectiles/wailprojectile-s-4.png %% ../../data/tutorial/images/units/elder-mage-ranged1.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage-ranged1.png %% ../../data/tutorial/images/units/elder-mage-defend.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage-defend.png %% ../../images/terrain/castle/sunkenkeep-inside-sw.png ../../images/terrain/castle/sunkenkeep-wall-sw.png %% ../../data/tutorial/images/units/elder-mage-ranged3.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage-ranged3.png %% ../../data/tutorial/images/units/human-princess-attack-1.png ../../data/campaigns/Heir_To_The_Throne/images/units/human-princess-attack-1.png %% ../../images/terrain/castle/keep-wall-1-ne.png ../../images/terrain/castle/keep-wall-0-ne.png ../../images/terrain/castle/keep-inside-ne.png ../../images/terrain/castle/keep-wall-ne.png %% ../../data/campaigns/Under_the_Burning_Suns/external_binary_data/images/UtBS_campaign_icon.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/kaleh.png %% ../../data/campaigns/The_Rise_Of_Wesnoth/images/units/undead-vampirelady-defend.png ../../data/campaigns/The_Rise_Of_Wesnoth/images/units/undead-vampirelady-range.png %% ../../images/terrain/castle/sunkenkeep-wall-1-nw.png ../../images/terrain/castle/sunkenkeep-wall-nw.png ../../images/terrain/castle/sunkenkeep-wall-0-nw.png ../../images/terrain/castle/sunkenkeep-inside-nw.png %% ../../images/misc/bar-energy-enemy.png ../../images/misc/bar-energy.png %% ../../data/campaigns/Heir_To_The_Throne/images/story/story9.png ../../data/campaigns/The_Rise_Of_Wesnoth/images/story/rough_landing.png %% ../../images/terrain/castle/sunkenkeep-wall-0-ne.png ../../images/terrain/castle/sunkenkeep-inside-ne.png ../../images/terrain/castle/sunkenkeep-wall-1-ne.png ../../images/terrain/castle/sunkenkeep-wall-ne.png %% ../../images/buttons/paste_button_editor-active.png ../../images/buttons/paste_button_editor.png ../../images/buttons/paste_button_editor-pressed.png %% ../../data/campaigns/Eastern_Invasion/external_binary_data/images/EI_campaign_image.png ../../data/campaigns/Eastern_Invasion/images/portraits/gweddry.png %% ../../images/terrain/castle/encampment-convex-se.png ../../images/terrain/castle/encampment-concave-se.png %% ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-archer+female-defend.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-archer-defend.png %% ../../data/campaigns/Under_the_Burning_Suns/external_binary_data/images/UtBS_difficulty_hard.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-prowler.png %% ../../images/terrain/lava-dcastle-ccw-nw.png ../../images/terrain/lava-dcastle-chasm-ccw-nw.png %% ../../images/units/human-magi/white-mage+female-die-4.png ../../images/units/human-magi/white-mage-die-4.png %% ../../images/buttons/group_castle-active.png ../../images/buttons/group_castle-active-pressed.png %% ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-sharpshooter-defend.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-sharpshooter+female-defend.png %% ../../data/tutorial/images/portraits/lisar.png ../../data/campaigns/Heir_To_The_Throne/images/portraits/lisar.png %% ../../images/items/bones.png ../../data/campaigns/Under_the_Burning_Suns/images/items/bones.png %% ../../data/tutorial/images/units/human-princess-defend.png ../../data/campaigns/Heir_To_The_Throne/images/units/human-princess-defend.png %% ../../images/terrain/castle/sunkenkeep-keep-se.png ../../images/terrain/castle/sunken-ruinkeep1-keep-se.png %% ../../data/campaigns/Under_the_Burning_Suns/external_binary_data/images/UtBS_difficulty_challenging.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-sentinel.png %% ../../images/terrain/flat/farm-veg-spring2.png ../../images/terrain/flat/farm-veg-spring1.png %% ../../images/misc/dot.png ../../data/campaigns/The_South_Guard/images/misc/dot.png %% ../../data/tutorial/images/units/human-princess-attack-4.png ../../data/campaigns/Heir_To_The_Throne/images/units/human-princess-attack-4.png %% ../../images/terrain/water/coast.png ../../data/campaigns/Under_the_Burning_Suns/images/terrain/coast.png %% ../../images/terrain/castle/ruinkeep1-keep-w.png ../../images/terrain/castle/keep-keep-w.png %% ../../data/tools/TeamColorizer.pl ../../data/tools/unit_tree/TeamColorizer.pl %% ../../images/terrain/castle/sunkenkeep-keep-sw.png ../../images/terrain/castle/sunken-ruinkeep1-keep-sw.png %% ../../images/terrain/castle/sunkenkeep-keep-nw.png ../../images/terrain/castle/sunken-ruinkeep1-keep-nw.png %% ../../images/terrain/castle/ruinkeep1-keep-e.png ../../images/terrain/castle/keep-keep-e.png %% ../../data/campaigns/The_Rise_Of_Wesnoth/external_binary_data/images/TRoW_difficulty_easy.png ../../data/campaigns/The_Rise_Of_Wesnoth/images/units/noble-fighter.png %% ../../images/terrain/chasm-dcastle-concave-sw.png ../../images/terrain/castle/dwarven-castle-concave-sw.png %% ../../data/tutorial/images/portraits/konrad.png ../../data/campaigns/Heir_To_The_Throne/external_binary_data/images/HttT_campaign_image.png ../../data/campaigns/Heir_To_The_Throne/images/portraits/konrad.png %% ../../images/projectiles/wailprojectile-n-5.png ../../images/projectiles/wailprojectile-s-5.png %% ../../images/terrain/castle/keep-keep-nw.png ../../images/terrain/castle/ruinkeep1-keep-nw.png %% ../../data/tutorial/images/units/elder-mage-ranged2.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage-ranged2.png %% ../../images/units/elves-wood/archer+female-die3.png ../../images/units/elves-wood/archer-die3.png %% ../../data/campaigns/Two_Brothers/external_binary_data/images/TB_campaign_image.png ../../data/campaigns/Two_Brothers/images/arne.png %% ../../data/campaigns/The_Rise_Of_Wesnoth/external_binary_data/images/TRoW_campaign_icon.png ../../data/campaigns/The_Rise_Of_Wesnoth/external_binary_data/images/TRoW_difficulty_hard.png ../../data/campaigns/The_Rise_Of_Wesnoth/images/units/noble-lord.png %% ../../data/campaigns/Under_the_Burning_Suns/external_binary_data/images/UtBS_difficulty_normal.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-hunter.png %% ../../data/campaigns/The_South_Guard/external_binary_data/images/TSG_campaign_image.png ../../data/campaigns/The_South_Guard/images/portraits/deoran.png %% ../../data/tutorial/images/units/human-princess-attack-2.png ../../data/campaigns/Heir_To_The_Throne/images/units/human-princess-attack-2.png %% ../../data/tutorial/images/units/human-princess-attack-3.png ../../data/campaigns/Heir_To_The_Throne/images/units/human-princess-attack-3.png %% ../../images/terrain/cloud1_1.png ../../images/terrain/cloud1_3.png %% ../../images/terrain/castle/keep-wall-e.png ../../images/terrain/castle/keep-inside-e.png %% ../../data/tutorial/images/units/elder-mage-melee2.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage-melee2.png %% ../../data/campaigns/The_Rise_Of_Wesnoth/external_binary_data/images/TRoW_campaign_image.png ../../data/campaigns/The_Rise_Of_Wesnoth/images/story/the_duel.png %% ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-marksman+female-defend.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-marksman-defend.png %% ../../images/buttons/group_village-active-pressed.png ../../images/buttons/group_village.png ../../images/buttons/group_village-pressed.png ../../images/buttons/group_village-active copy.png ../../images/buttons/group_village-active.png %% ../../images/projectiles/fire-breath-s-1.png ../../images/projectiles/fire-breath-n-1.png %% ../../data/tutorial/images/units/elder-mage-melee1.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage-melee1.png %% ../../images/buttons/group_castle.png ../../images/buttons/group_castle-pressed.png %% ../../data/campaigns/The_Rise_Of_Wesnoth/external_binary_data/images/TRoW_difficulty_normal.png ../../data/campaigns/The_Rise_Of_Wesnoth/images/units/noble-commander.png %% ../../images/buttons/group_cave-active.png ../../images/buttons/group_cave-pressed.png ../../images/buttons/group_cave-active-pressed.png %% ../../images/terrain/castle/keep-wall-0-nw.png ../../images/terrain/castle/keep-inside-nw.png ../../images/terrain/castle/keep-wall-nw.png ../../images/terrain/castle/keep-wall-1-nw.png %% ../../data/tutorial/images/units/elder-mage.png ../../data/campaigns/Heir_To_The_Throne/images/units/elder-mage.png %% ../../data/tutorial/images/units/human-princess.png ../../data/campaigns/Heir_To_The_Throne/images/units/human-princess.png %% ../../images/buttons/group_bridge-active.png ../../images/buttons/group_bridge-active-pressed.png ../../images/buttons/group_bridge.png ../../images/buttons/group_bridge-pressed.png %% ../../data/campaigns/Under_the_Burning_Suns/external_binary_data/images/UtBS_campaign_image.png ../../data/campaigns/Under_the_Burning_Suns/images/portraits/kaleh.png %% ../../images/terrain/castle/encampment-concave-e.png ../../images/terrain/castle/encampment-convex-e.png %% ../../images/terrain/castle/encampment-concave-sw.png ../../images/terrain/castle/encampment-convex-sw.png %% ../../images/units/human-magi/white-mage+female-die-3.png ../../images/units/human-magi/white-mage-die-3.png %% ../../images/terrain/castle/ruinkeep1-keep-ne.png ../../images/terrain/castle/keep-keep-ne.png %% ../../data/campaigns/Heir_To_The_Throne/external_binary_data/images/HttT_campaign_icon.png ../../data/campaigns/Heir_To_The_Throne/images/units/konrad-lord-leading.png %% ../../images/terrain/castle/sunkenkeep-keep-w.png ../../images/terrain/castle/sunken-ruinkeep1-keep-w.png %% ../../images/terrain/castle/keep-keep-se.png ../../images/terrain/castle/ruinkeep1-keep-se.png %% ../../data/tutorial/images/portraits/delfador.png ../../data/campaigns/Heir_To_The_Throne/images/portraits/delfador.png %% ../../src/tools/.deps/cutter.Po ../../src/tools/.deps/dummy_video.Po ../../src/tools/.deps/exploder.Po ../../src/tools/.deps/exploder_composer.Po ../../src/tools/.deps/exploder_cutter.Po ../../src/tools/.deps/exploder_utils.Po ../../src/campaign_server/.deps/campaign_server.Po ../../src/server/.deps/game.Po ../../src/server/.deps/input_stream.Po ../../src/server/.deps/metrics.Po ../../src/server/.deps/player.Po ../../src/server/.deps/proxy.Po ../../src/server/.deps/server.Po ../../src/.deps/loadscreen_empty.Po %% ../../images/terrain/castle/encampment-concave-ne.png ../../images/terrain/castle/encampment-convex-ne.png %% ../../images/attacks/rectangular-shield.png ../../data/campaigns/The_South_Guard/images/attacks/rectangular_shield.png %% ../../images/terrain/castle/sunkenkeep-inside-e.png ../../images/terrain/castle/sunkenkeep-wall-e.png %% ../../images/units/human-loyalists/duelist.png ../../images/units/human-loyalists/duelist-stand2.png %% ../../autom4te.cache/output.0 ../../autom4te.cache/output.1 %% ../../images/terrain/cave/wall-rough-chasm-convex-ne.png ../../images/terrain/cave/wall-rough-convex-ne.png %% ../../images/terrain/castle/ruinkeep1-keep-sw.png ../../images/terrain/castle/keep-keep-sw.png %% ../../images/misc/cross.png ../../data/campaigns/The_South_Guard/images/misc/cross.png %% ../../images/terrain/castle/sunkenkeep-keep-ne.png ../../images/terrain/castle/sunken-ruinkeep1-keep-ne.png %% ../../images/cursors-bw/select.png ../../images/cursors-bw/attack_drag_alt.png ../../images/cursors-bw/attack.png %% ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-archer-female-die3.png ../../data/campaigns/Under_the_Burning_Suns/images/newelves/desert-elvish-archer-die3.png %% ../../images/terrain/castle/keep-inside-w.png ../../images/terrain/castle/keep-wall-w.png %% ../../images/wesnoth-icon.png ../../icons/wesnoth-icon.png %% ../../images/terrain/castle/sunkenkeep-inside-w.png ../../images/terrain/castle/sunkenkeep-wall-w.png %% ../../images/terrain/castle/encampment-concave-nw.png ../../images/terrain/castle/encampment-convex-nw.png -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> When your hammer is C++, everything begins to look like a thumb. -- Steve Hoflich on compl.lang.c++ _______________________________________________ Wesnoth-dev mailing list Wesnoth-dev@gna.org https://mail.gna.org/listinfo/wesnoth-dev