UbisamBase 플랫폼 위에서 도는 플러그인. 지금까지 만든 것을 그대로 담는다. - 폴더 비교 / 파일 비교(부분 수용·워드랩·찾기) / 3-Way 병합 / Git 조작 - 비교 엔진: histogram 정렬 · 이동 블록 감지 · 무시 규칙 · 13개 언어 토크나이저 - doc/ 에 작업 지시서와 진행 기록 빌드 산출물(bin/obj)은 추적하지 않는다 - 플랫폼 런타임이 빌드 때마다 D:\UbisamPlatform\bin 에서 복사되어 들어오므로 저장소에 담을 이유가 없다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
60 lines
2.6 KiB
C#
60 lines
2.6 KiB
C#
using System.Windows;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using MergeHub.Services;
|
|
using MergeHub.ViewModels;
|
|
using MergeHub.Views;
|
|
using UbisamBase.Core.Modules;
|
|
using UbisamBase.Core.Setup;
|
|
|
|
namespace MergeHub
|
|
{
|
|
/// <summary>
|
|
/// UbisamBase.Shell.exe 가 리플렉션으로 찾아 로드하는 단일 진입점.
|
|
/// 이 dll 자체는 실행 파일이 아니다.
|
|
/// </summary>
|
|
public class AppSetup : IAppSetup
|
|
{
|
|
public string GetAppName() => "MergeHub - 사내 Git Merge/Diff";
|
|
|
|
public void RegisterViews(ITabManager manager)
|
|
{
|
|
// 머지툴은 3분할 비교라 가로 공간이 곧 성능이다.
|
|
// 셸 기본 여백(26,22)을 없애고 창 전체를 쓴다 - 안쪽 여백은 HomeView가 직접 준다.
|
|
// 이 키는 테마 전환에도 유지되므로 한 번만 덮어쓰면 되고,
|
|
// ShellWindow가 창 생성 시점에 읽어가므로 RegisterViews 안에서 정해야 한다.
|
|
if (Application.Current is { } app)
|
|
app.Resources["Ubisam.Metric.ContentPadding"] = new Thickness(0);
|
|
|
|
// 탭 순서는 실제 작업 순서를 따른다.
|
|
// 폴더 비교로 "어느 파일이 다른가"를 먼저 보고 → 그 파일을 골라 파일 비교로 들어가고
|
|
// → 필요하면 Git 으로 커밋한다.
|
|
// 폴더 비교에서 항목을 더블클릭하면 파일 비교 탭으로 넘어가므로 흐름이 이어진다.
|
|
manager.AddMain<FolderView, FolderViewModel>(Icon.Folder, ViewIds.Folder, "폴더 비교");
|
|
manager.AddMain<HomeView, HomeViewModel>(Icon.Document, ViewIds.Home, "파일 비교");
|
|
manager.AddMain<GitView, GitViewModel>(Icon.Link, ViewIds.Git, "Git");
|
|
}
|
|
|
|
public void RegisterSettings(ITabManager manager)
|
|
{
|
|
manager.AddSettingsSub<MergeHubSettings>(TabManager.SettingsTabKey, "MergeHub");
|
|
}
|
|
|
|
public void RegisterServices(IServiceCollection services)
|
|
{
|
|
// Git 조작 계층. Repository 핸들 하나를 화면 전체가 공유하므로 싱글턴.
|
|
services.AddSingleton<IGitService, GitService>();
|
|
|
|
// 홈(머지툴) 탭과 Git 탭이 함께 보는 저장소 상태. 호출 직렬화도 여기서 한다.
|
|
services.AddSingleton<GitWorkspace>();
|
|
}
|
|
}
|
|
|
|
/// <summary>AddMain/AddSub 에서 탭을 다시 찾을 때 쓰는 키.</summary>
|
|
public static class ViewIds
|
|
{
|
|
public const string Home = "MergeHub.Home";
|
|
public const string Folder = "MergeHub.Folder";
|
|
public const string Git = "MergeHub.Git";
|
|
}
|
|
}
|