Last updated:
0 purchases
git stamp
Git Stamp 🏷 #
Advanced await-less information provider and development tool.
Git Stamp 🏷
🏞️ Preview
1. Check out the Example
2. Screenshots
📑️ About
1. Why Git Stamp?
2. How it work?
3. Motivation
4. Roadmap
5. Sponsor
🛠️ Installation
1. pubspec.yaml
2. .gitignore
3. analysis_options.yaml
4. README.md
🏗️ Generating
1. Examples
2. Tip
3. Custom gen-only parameters
💻 Usage
1. GitStampListTile
2. GitStampIcon
3. custom
4. showGitStampLicensePage()
5. Central GitStamp node for advanced usage:
📦 Integration
GitHub Actions
📝 License
🏞️ Preview #
1. Check out the Example #
2. Screenshots #
📑️ About #
1. Why Git Stamp? #
When working with Flutter and Git, especially in a team environment, human errors such as forgetting to run git pull can lead to issues during branch merges. Git Stamp helps address these problems by offering:
Build Date, SHA & Branch Information - Git Stamp allows you to precisely determine which version of the application was deployed. This is especially useful during debugging or verifying issues, as application versions and build numbers are not always updated correctly.
Debugging and Troubleshooting - Knowing the build date and exact code version (SHA) makes it much easier for the development team to identify the problematic code when users report bugs.
Avoiding Lost Changes in Teamwork - It allows you to quickly see which commits made it into the final version of the application, helping to prevent missing changes due to overlooked git pull commands.
Caching Issues in the Web Version - Even if the latest version is deployed, users may still see an older version due to caching. Git Stamp helps identify whether the deployed version or an outdated one was loaded.
2. How it work? #
3. Motivation #
The main motivation was Minecraft with information like this:
Version: v1.20.81
Build: 24130126
Branch: r/20_u8
SHA: a9081c5429038dcf3f26269f7351d89f
copied to clipboard
Git Stamp code:
import 'git_stamp/git_stamp.dart';
Text('Version: ${GitStamp.appVersion}'),
Text('Build: ${GitStamp.appBuild}'),
Text('Branch: ${GitStamp.buildBranch}'),
Text('SHA: ${GitStamp.sha}'),
copied to clipboard
4. Roadmap #
Changelogs (Text) (Image)
🆕 Version
🗓️ Date
📝 Change Description
Version 6
Someday it will be
📦 JSON data export
Version 5
Someday it will be
🔐 Data encription
Version 4
24.07.2024
🌟 New icon build-type
Version 3
30.06.2024
🔧 New gen-only build-type
Version 2
10.04.2024
🛠️ Commit diff
Version 1
11.12.2023
🚀 First version
5. Sponsor #
Aron Code
🛠️ Installation #
1. pubspec.yaml #
dart pub add git_stamp
copied to clipboard
2. .gitignore #
Important
Add git_stamp to .gitignore.
echo -e "\n/lib/git_stamp/" >> .gitignore.
If you add a /git_stamp folder for the repository and use the FULL version, the size of the repository will grow EXPONENTIALLY.
3. analysis_options.yaml #
analyzer:
exclude:
- lib/git_stamp/**
copied to clipboard
4. README.md #
Warning
Add badge to your README.md 😄️
[![Git Stamp](https://img.shields.io/badge/i%20love%20Git%20Stamp-ffff99?style=flat)](https://github.com/arononak/git_stamp)
copied to clipboard
🏗️ Generating #
1. Examples #
Build type
Pure Dart
CLI Command
LITE
NO
dart run git_stamp
FULL
NO
dart run git_stamp --build-type full
ICON
NO
dart run git_stamp --build-type icon
CUSTOM
YES
dart run git_stamp --gen-only build-branch,build-date-time
2. Tip #
Caution
Generating requires the use of the git command-line interface (CLI).
3. Custom gen-only parameters #
#
Parameter
1
commit-list
2
diff-list
3
diff-stat-list
4
repo-creation-date
5
build-branch
6
build-date-time
7
build-system-info
8
build-machine
9
repo-path
10
observed-files-list
11
app-version
12
app-build
13
app-name
14
git-config
15
git-remote
15
git-remote-list
💻 Usage #
1. GitStampListTile #
if (kDebugMode) ...[
GitStampListTile(monospaceFontFamily: GoogleFonts.spaceMono().fontFamily),
],
copied to clipboard
2. GitStampIcon #
if (isProd == false) ...[
GitStampIcon(),
],
copied to clipboard
3. custom #
if (isProd == false) ...[
IconButton(
onPressed: () => showGitStampPage(context: context, monospaceFontFamily: GoogleFonts.spaceMono().fontFamily),
icon: const Icon(Icons.book),
),
],
copied to clipboard
4. showGitStampLicensePage() #
Note
Use function GitStamp.showLicensePage instead of showLicensePage if you want the name and version to be added automatically.
5. Central GitStamp node for advanced usage: #
class GitStamp {
static List<GitStampCommit> get commitList
static GitStampCommit? get latestCommit
static String get sha
static int get commitCount
static Map<String, dynamic> diffList
static Map<String, dynamic> diffStatList
static const String buildBranch
static const String buildDateTime
static const String buildSystemInfo
static GitStampBuildMachine buildMachine
static const String repoCreationDate
static const String repoPath
static String observedFiles
static List<String> observedFilesList
static int observedFilesCount
static const String appVersion
static const String appBuild
static const String appName
static const String gitConfigGlobalUserName
static const String gitConfigGlobalUserEmail
static const String gitConfigUserName
static const String gitConfigUserEmail
static const String gitRemote
static showLicensePage({
required BuildContext context,
Widget? applicationIcon,
String? applicationLegalese,
bool useRootNavigator = false,
})
}
copied to clipboard
📦 Integration #
GitHub Actions #
.github/workflows/build_and_deploy.yml
name: build_and_deploy
on:
push:
branches: [main]
pull_request_target:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.22.2'
channel: 'stable'
- run: flutter --version
- uses: actions/setup-java@v1
with:
java-version: "12.x"
- run: flutter pub get
- run: dart run git_stamp
- run: flutter build web --release --web-renderer canvaskit
- uses: actions/upload-artifact@master
with:
name: build
path: build/web
deploy:
name: "Deploy"
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@master
with:
name: build
path: build/web
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: "${{ secrets.GITHUB_TOKEN }}"
firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT }}"
projectId: xxx
channelId: live
copied to clipboard
📝 License #
Note
Copyright © 2024 Aron Onak. All rights reserved.
Licensed under the MIT license.
If you have any feedback, please contact me at [email protected]
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.